2009-11-09 8 views
8

Nel mio progetto sto attualmente preparando un passaggio graduale dal codice legacy a moduli nuovi, ben progettati e testati. Dal momento che non tutti i programmatori seguono da vicino quello che faccio, vorrei emettere degli avvertimenti quando viene usato il vecchio codice. Inoltre, preferirei fortemente poter fornire suggerimenti su come portare il vecchio codice.Come posso contrassegnare il codice Perl come deprecato?

ho trovato due modi per farlo:

  1. Attribute::Deprecated, che va bene per le funzioni, ma piuttosto ingombrante se un modulo completo è deprecato. Inoltre, nessuna informazione aggiuntiva oltre agli avvisi.

  2. Perl::Critic::Policy::Modules::ProhibitEvilModules per moduli o forse una regola personalizzata Perl::Critic per un deprecazione più fine a livello di funzione o metodo. Questo metodo va bene, ma non è immediatamente ovvio dal codice stesso che è deprecato.

Altri suggerimenti o suggerimenti su come eseguire questa operazione in modo corretto e semplice?

risposta

16

Per metodi e funzioni, è sufficiente sostituire il corpo della funzione con un avviso 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 (per esempio Win32::GUI::import): Tutto dipende esattamente quello che vuoi fare.

Problemi correlati