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

时间:2009-11-09 13:57:53

标签: perl legacy-code deprecated obsolete

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

我找到了两种方法:

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

  2. Perl::Critic::Policy::Modules::ProhibitEvilModules用于模块或可能是自定义Perl::Critic规则,以便在功能或方法级别上进行更精细的弃用。这种方法很好,但是代码本身并不是很明显它已被弃用。

  3. 任何其他建议或技巧如何正确和轻松地做到这一点?

1 个答案:

答案 0 :(得分:16)

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

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):这完全取决于您想要做什么。