在我的项目中,我正在准备从遗留代码到新的,经过适当设计和测试的模块的逐步过程.由于不是每个程序员都密切关注我的工作,因此我想在使用旧代码时发出警告.我也非常希望能够输出有关如何移植旧代码的建议.
我发现了两种方法:
> 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块中.
您也可以在导入方法中添加警告(例如Win32::GUI::import):这完全取决于您想要做什么.