在Perl中声明包版本方法的优缺点是什么?

模块很酷,特别是当它们进行版本控制时.您可以定义最小模块版本,以防止想要使用的方法泄漏.但是每一个轻微的一面都有一个黑暗的一面,这意味着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的几率.

http://stackoverflow.com/questions/17615935/what-are-the-pros-and-cons-about-declaring-package-version-methods-in-perl

转载注明原文:在Perl中声明包版本方法的优缺点是什么?