2009-11-09 38 views
8

在我的項目中,我正在準備從遺留代碼逐步移動到新的,經過正確設計和測試的模塊。由於並非每個程序員都密切關注我的工作,所以我希望在使用舊代碼時發出警告。我也強烈希望能夠輸出關於如何移植舊代碼的建議。如何將Perl代碼標記爲已棄用?

我發現這樣做的方法有兩種:

  1. Attribute::Deprecated,這是罰款的功能,但如果一個完整的模塊已被棄用相當麻煩。此外,除了警告外,沒有其他信息。

  2. Perl::Critic::Policy::Modules::ProhibitEvilModules對於模塊或者可能是自定義Perl::Critic規則在功能或方法級別更好的棄用。這種方法沒問題,但代碼本身並不明顯表示它已被棄用。

任何其他建議或技巧如何正確且容易做到這一點?

回答

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):你想要做的正是這一切都取決於。

相關問題