2009-11-09 26 views
8

W moim projekcie przygotowuję krok po kroku przejście od starszego kodu do nowych, prawidłowo zaprojektowanych i przetestowanych modułów. Ponieważ nie każdy programista dokładnie śledzi to, co robię, chciałbym emitować ostrzeżenia, gdy używany jest stary kod. Zdecydowanie wolałabym też wyprowadzać zalecenia dotyczące przenoszenia starego kodu.Jak mogę oznaczyć kod Perla jako przestarzałe?

Znalazłem dwa sposoby robienia go:

  1. Attribute::Deprecated, co jest dobre dla funkcji, ale dość kłopotliwe jeśli kompletny moduł jest przestarzała. Ponadto nie ma dodatkowych informacji poza ostrzeżeniami.

  2. Perl::Critic::Policy::Modules::ProhibitEvilModules dla modułów lub niestandardowej reguły Perl::Critic dla lepszej amortyzacji na poziomie funkcji lub metody. Ta metoda jest dobra, ale z samego kodu nie wynika, że ​​jest ona przestarzała.

Jakieś inne sugestie lub wskazówki, jak to zrobić właściwie i łatwo?

Odpowiedz

16

Metody i funkcje można po prostu zastąpić treścią funkcji ostrzeżeniem i wywołaniem preferowanej funkcji.

perl perllexwarn podaje następujący przykład:

package MyMod::Abc; 

sub open { 
    warnings::warnif("deprecated", 
    "open is deprecated, use new instead"); 
    new(@_); 
} 

sub new { 
    # ... 
} 
1; 

Jeśli deprecjację cały moduł, należy umieścić ostrzeżenie w BEGIN bloku w module.

Można również umieścić ostrzeżenia w metodzie import (np. Win32::GUI::import): Wszystko zależy od tego, co dokładnie chcesz zrobić.

Powiązane problemy