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

标签 perl versioning timtowtdi

模块很酷,特别是当它们带有版本控制时。您可以定义最小模块版本以防止您要使用的方法泄漏。但是每一个光明的一面都有一个黑暗的一面,这意味着 Perl 的 TIMTOWTDI。

作为一名 Perl 开发人员将近七年之后,我以多种方式看到并编写了版本声明。有些很容易被认为是坏的,有些则不是。由于没有人能完全了解一门语言,所以我想问你们,在 Perl 中进行以下软件版本控制的优缺点是什么。

如果您发现有一种泄漏,请不要犹豫,评论更多的版本定义方式;)

请尊重:

  • 奇怪的模块要求/使用可能导致检测模块版本(编译与运行时)的问题
  • PAUSE/CPAN 解析(和其他常见服务)
  • 最终用户的可读性
  • 开发人员的可维护性

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

    方法一
    package PackageName;
    BEGIN {
      use version 0.77; our $VERSION = version->new('v0.0_1');
    }
    

    方法二
    package PackageName;
    BEGIN {
      our $VERSION = 0.000_01;
    }
    

    方法三
    package PackageName;
    BEGIN {
      our $VERSION = 0.0.1;
    }
    

    方法四
    package PackageName;
    use version 0.77; our $VERSION = version->new('v0.0_1');
    

    方法五
    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的答案并思考了一下之后,我不得不同意将版本号放在引号中。它不会以任何方式改变功能,但会降低 0.00101 的可能性。被误认为 v0.1.1 , 实际上是 v0.1.10更清楚地读作 0.001010 .

    关于perl - 在 Perl 中声明包版本方法的优缺点是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17615935/

    相关文章:

    ruby - 为什么在 Ruby 中做同样的事情有那么多略有不同的方法?

    mysql - Perl取消引用散列散列数组中的单个元素

    Java显示应用程序版本号的最佳实践

    list - 如何获取由 Perl6 中的重复项组成的列表?

    naming-conventions - 接口(interface)和版本控制

    svn - Subversion 在每次提交时作为版本增量器?

    perl - CPAN shell 内存不足。如何在 Unix 上给它更多内存?

    perl - 为什么我的Perl祝福的文件句柄不使用 `can(' print')`'返回true?

    perl - Mojolicious 未设置 Cookie 域