Nik*_*nko 8 perl legacy-code deprecated obsolete
在我的项目中,我正在准备从遗留代码到新的,经过适当设计和测试的模块的逐步过程.由于并非每个程序员都密切关注我的工作,因此我想在使用旧代码时发出警告.我也非常希望能够输出有关如何移植旧代码的建议.
我找到了两种方法:
Attribute :: Deprecated,对于函数来说很好,但是如果不推荐使用完整的模块则相当麻烦.此外,除了警告之外,没有其他信息.
Perl::Critic::Policy::Modules::ProhibitEvilModules对于模块或可能是自定义Perl::Critic规则,以便在函数或方法级别上进行更精细的弃用.这种方法很好,但是代码本身并不是很明显它已被弃用了.
任何其他建议或技巧如何正确和容易地做到这一点?
Sin*_*nür 16
对于方法和函数,您可以使用警告和对首选函数的调用来替换函数体.
perl perllexwarn给出了以下示例:
package MyMod::Abc;
sub open {
warnings::warnif("deprecated",
"open is deprecated, use new instead");
new(@_);
}
sub new {
# ...
}
1;
Run Code Online (Sandbox Code Playgroud)
如果您要弃用整个模块,请将警告放在BEGIN模块的块中.
您也可以在import方法中添加警告(例如Win32 :: GUI :: import):这完全取决于您想要做什么.