bur*_*rsk 15 versioning perl timtowtdi
模块很酷,特别是当它们带有版本控制时.您可以定义最小模块版本以防止要使用的方法泄漏.但是每个光线都有一个黑暗的一面,这意味着Perl的TIMTOWTDI.
在作为Perl开发人员近七年后,我看到并以多种方式编写了版本声明.有些很容易被指出为坏,有些则不然.由于没有人能完全了解某种语言,所以我想问问你们,Perl中以下软件版本的优缺点是什么.
如果您发现一个泄漏,请不要犹豫,评论更多的版本定义方式;)
请尊重:
在Perl中声明包版本方法的优缺点是什么?
方法1
package PackageName;
BEGIN {
use version 0.77; our $VERSION = version->new('v0.0_1');
}
Run Code Online (Sandbox Code Playgroud)
方法2
package PackageName;
BEGIN {
our $VERSION = 0.000_01;
}
Run Code Online (Sandbox Code Playgroud)
方法3
package PackageName;
BEGIN {
our $VERSION = 0.0.1;
}
Run Code Online (Sandbox Code Playgroud)
方法4
package PackageName;
use version 0.77; our $VERSION = version->new('v0.0_1');
Run Code Online (Sandbox Code Playgroud)
方法5
package PackageName;
our $VERSION = 0.000_01;
Run Code Online (Sandbox Code Playgroud)
方法6
package PackageName;
our $VERSION = 0.0.1;
Run Code Online (Sandbox Code Playgroud)
正确的答案是,这样做:
package My::Thing;
our $VERSION = "0.001";
Run Code Online (Sandbox Code Playgroud)
版本应始终为十进制数,使用三位数拆分约定.上面的版本将缩短到v0.1.0,改变你将定义你的版本的缩写形式的第3步:0.001001这将是v0.1.1缩写.
不要将下划线放入您的版本号以标记开发版本.Perl工具链后来采用了-TRIAL机制,例如Dist :: Zilla 4.101800-TRIAL.这样做的好处是代码中的版本号不需要更改.通过添加-TRIAL,只能从标准中修改发布文件名和元文件.
编辑:
在阅读了daxim的回答并稍稍思考之后,我必须同意将版本号放在引号中.它不会以任何方式改变功能,但会降低0.00101被误认的可能性,v0.1.1实际上v0.1.10并且更清楚地被读作0.001010.
最佳实践根据我潜伏多年后#toolchain和各种模块相关的邮件列表.
对于模块:
package Foo::Bar 2.001; # 2nd version of revision 2
package Fnord 2.420; # 421st version of revision 2
Run Code Online (Sandbox Code Playgroud)
除此以外:
our $VERSION = '2.001'; # 2nd version of revision 2
our $VERSION = '2.420'; # 421st version of revision 2
Run Code Online (Sandbox Code Playgroud)
每个模块都必须有一个版本,否则在分配分发时准确指定依赖关系是有问题的.当分发版本和每个模块的版本相同并且在锁定步骤中增加时,它最有效.为了简化这一点,请使用perl-reversion,它是Perl :: Version的一部分.每次需要依赖分发外部代码的新功能或更改的API时,请增加版本.
使用package声明时,版本是有理数.如果package声明不合适,则声明magic $VERSION变量,然后版本为字符串.
在任何情况下,版本都包含一个修订号,一个文字点作为分隔符和一个版本号,完全在表单中y.xxx.y是一个自然数,xxx正好是三个零填充数字.字符串引用可防止尾随零消失.填充到相同数量的数字可防止混淆1.10 < 1.9.只有一个分隔符可以避免混淆5.10.1 == 5.010001.
请勿使用版本模块声明版本.使用普通字符串可以防止v分发tarball名称中的丑陋前缀.但是,使用模块处理版本(例如用于比较它们)是个好主意.
不要使用v-strings.他们很难理解.
不要使用下划线.使用下划线需要评估版本以将其转换为数字.如果要将分发标记为PAUSE索引器的候选发布,请将该单词添加TRIAL到分发名称.
VERSION只能通过通用类方法访问版本.
perl -mLWP::Simple -E'say LWP::Simple->VERSION'
Run Code Online (Sandbox Code Playgroud)
该计划完全符合中提出的建议
它与semver不兼容.
| 归档时间: |
|
| 查看次数: |
346 次 |
| 最近记录: |