Come posso segnare codice Perl come deprecato?
-
19-09-2019 - |
Domanda
Nel mio progetto che sto attualmente preparando una mossa passo-passo dal codice legacy ai moduli nuovi, opportunamente progettati e testati. Dal momento che non tutti i compagni programmatore segue da vicino quello che faccio, mi piacerebbe emettere avvertimenti quando si utilizza il vecchio codice. Vorrei anche fortemente preferisco essere in grado di raccomandazioni di uscita su come porto vecchio codice.
Ho trovato due modi per farlo:
-
Attribute :: Disapprovato, che va bene per le funzioni, ma piuttosto ingombrante se un modulo completo è obsoleto. Inoltre, nessuna informazione aggiuntiva a parte gli avvertimenti.
-
Perl::Critic::Policy::Modules::ProhibitEvilModules
per i moduli o forse una regola personalizzata perPerl::Critic
deprecazione più fine sulla funzione o livello di metodo. Questo metodo va bene, ma non è immediatamente evidente dal codice stesso che è deprecato.
Altri suggerimenti o trucchi su come farlo correttamente e facile?
Soluzione
Per i metodi e le funzioni, si può semplicemente sostituire il corpo della funzione con un avvertimento e una chiamata alla funzione preferita.
perl perllexwarn fornisce il seguente esempio:
package MyMod::Abc;
sub open {
warnings::warnif("deprecated",
"open is deprecated, use new instead");
new(@_);
}
sub new {
# ...
}
1;
Se si deprecando un intero modulo, messo l'avviso in un blocco BEGIN
nel modulo.
Si può anche mettere le avvertenze nel metodo import
(ad esempio Win32 :: GUI :: import ):. tutto dipende esattamente quello che vuoi fare