9

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

我找到了两种方法:

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

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

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

4

1 回答 1

18

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

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

于 2009-11-09T14:08:21.280 回答