【问题标题】:How can I mark Perl code as deprecated?如何将 Perl 代码标记为已弃用?
【发布时间】:2009-11-09 13:57:52
【问题描述】:

在我的项目中,我目前正准备逐步从遗留代码迁移到经过适当设计和测试的新模块。由于不是每个程序员都密切关注我的工作,所以我想在使用旧代码时发出警告。我也非常希望能够输出有关如何移植旧代码的建议。

我找到了两种方法:

  1. Attribute::Deprecated,这对于函数来说很好,但如果不推荐使用完整的模块,则相当麻烦。此外,除了警告之外没有其他信息。

  2. Perl::Critic::Policy::Modules::ProhibitEvilModules 用于模块或自定义Perl::Critic 规则,用于在函数或方法级别上进行更精细的弃用。这种方法很好,但从代码本身来看,它已经被弃用了。

任何其他建议或技巧如何正确和简单地做到这一点?

【问题讨论】:

    标签: perl legacy-code deprecated obsolete


    【解决方案1】:

    对于方法和函数,您只需将函数体替换为警告和对首选函数的调用即可。

    perl perllexwarn 给出了以下示例:

     package MyMod::Abc;
    
     sub open {
         warnings::warnif("deprecated",
         "open is deprecated, use new instead");
         new(@_);
     }
    
     sub new {
         # ...
     }
     1;
    

    如果您要弃用整个模块,请将警告放在模块中的 BEGIN 块中。

    您也可以将警告放在import 方法中(例如Win32::GUI::import):这完全取决于您想要做什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-18
      • 2014-08-20
      • 2021-12-27
      • 2010-09-22
      • 1970-01-01
      • 2022-09-22
      相关资源
      最近更新 更多