模块很酷,特别是当它们进行版本控制时.您可以定义最小模块版本,以防止想要使用的方法泄漏.但是每一个轻微的一面都有一个黑暗的一面,这意味着Perl的TIMTOWTDI.
经过近七年的Perl开发人员,我以许多方式看到并写了版本声明.有些很容易被指出是坏的,有的不是.由于没有人能完全了解一种语言,我想问你们Perl中以下软件版本的优缺点是什么.
如果发现漏洞,请不要犹豫,评论更多的版本定义方式;)
请尊重
>奇怪的需要/使用模块可能会导致故障检测模块的版本(编译vs运行时)
>暂停/ CPAN解析(和其他常见服务)
>最终用户的可读性
>开发人员的可维护性
在Perl中声明包版本方法的优缺点是什么?
方法1
package PackageName; BEGIN { use version 0.77; our $VERSION = version->new('v0.0_1'); }
方法2
package PackageName; BEGIN { our $VERSION = 0.000_01; }
方法3
package PackageName; BEGIN { our $VERSION = 0.0.1; }
方法4
package PackageName; use version 0.77; our $VERSION = version->new('v0.0_1');
方法5
package PackageName; our $VERSION = 0.000_01;
方法6
package PackageName; our $VERSION = 0.0.1;
解决方法
正确的答案是这样做:
package My::Thing; our $VERSION = "0.001";
版本应始终为十进制数,使用三位数的拆分约定.上述版本将缩短为v0.1.0,以更改第3步缩写形式,您将定义您的版本,如下所示:0.001001,这将是v0.1.1缩写.
不要将下划线放入您的版本号以标记开发版本. Perl工具链之后采用了-TRIAL机制,如Dist::Zilla 4.101800-TRIAL所示.其优点是代码中的版本号不需要更改.只有发布文件名和元文件才能从规范中修改,方法是添加“.TRIAL”.
编辑:
在阅读daxim的答案并思考一下之后,我必须同意将版本号加入引号.它不会以任何方式改变功能,但是当实际上是v0.1.10并且更清楚地读为0.001010时,会减少0.00101被误认为v0.1.1的几率.