2009-11-09 7 views
8

In meinem Projekt bereite ich gerade einen Schritt-für-Schritt-Umzug von altem Code zu neuen, richtig entworfenen und getesteten Modulen vor. Da nicht jeder andere Programmierer genau das tut, was ich mache, möchte ich Warnungen ausgeben, wenn alter Code verwendet wird. Ich würde es auch sehr bevorzugen, wenn ich Empfehlungen geben könnte, wie man alten Code portiert.Wie kann ich Perl-Code als veraltet markieren?

Ich habe zwei Möglichkeiten gefunden, es zu tun:

  1. Attribute::Deprecated, die für Funktionen in Ordnung ist, aber recht umständlich, wenn ein komplettes Modul ist veraltet. Auch keine zusätzlichen Informationen außer Warnungen.

  2. Perl::Critic::Policy::Modules::ProhibitEvilModules für Module oder eine benutzerdefinierte Perl::Critic Regel für feinere Abwertung auf Funktions- oder Methodenebene. Diese Methode ist in Ordnung, aber es ist nicht unmittelbar aus dem Code selbst ersichtlich, dass sie veraltet ist.

Irgendwelche anderen Vorschläge oder Tricks, wie man das richtig und einfach macht?

Antwort

16

Für Methoden und Funktionen können Sie einfach den Hauptteil der Funktion durch eine Warnung und einen Aufruf der bevorzugten Funktion ersetzen.

perl perllexwarn gibt folgendes Beispiel:

package MyMod::Abc; 

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

sub new { 
    # ... 
} 
1; 

Wenn Sie ein ganzes Modul ironische, die Warnung in einem im Modul BEGIN Block setzen.

Sie können die Warnungen auch in die Methode import setzen (z. B. Win32::GUI::import): Alles hängt davon ab, was genau Sie tun möchten.

Verwandte Themen