perl - 如何将 Perl 代码标记为已弃用?

标签 perl legacy-code deprecated obsolete

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

我找到了两种方法:

  • Attribute::Deprecated ,这对于函数来说很好,但如果不推荐使用完整的模块,则相当麻烦。此外,除了警告之外没有其他信息。
  • Perl::Critic::Policy::Modules::ProhibitEvilModules用于模块或自定义 Perl::Critic在函数或方法级别上更好地弃用的规则。这种方法很好,但从代码本身并不能立即看出它已被弃用。

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

    最佳答案

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

    perl perllexwarn给出以下示例:

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

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

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

    关于perl - 如何将 Perl 代码标记为已弃用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1701118/

    相关文章:

    perl - 使用 WWW::Mechanize 模块的 submit_form 例程发布/提交文件

    perl - "Turn Off"binmode(STDOUT, ":utf8") 本地

    c++ - 修复 C++ 遗留代码 : class Iterator

    api - QuickBooks API QBD V3 真的被弃用了吗?

    Xcode 4.5 找不到弃用的函数

    Perl 舞者和模板工具包 : Including template within template

    regex - 带有捕获组的 Perl 正则表达式不起作用

    php - 在 PHP 中,如何将过程代码包装在类中?

    测试遗留代码

    android - API 26 (Android 8.0 Oreo) 弃用了 IntentService + WakefulBroadcastReceiver + AlarmManager。哪个是最好的选择?