2009-11-09 14 views
8

En mi proyecto actualmente estoy preparando un paso paso a paso del código heredado a módulos nuevos, diseñados y probados adecuadamente. Como no todos los compañeros programadores siguen de cerca lo que hago, me gustaría emitir advertencias cuando se usa el código anterior. También preferiría poder emitir recomendaciones sobre cómo portar código antiguo.¿Cómo puedo marcar el código de Perl como obsoleto?

he encontrado dos maneras de hacerlo:

  1. Attribute::Deprecated, que está bien para las funciones, sino más bien engorroso si un módulo completo está en desuso. Además, no hay información adicional aparte de las advertencias.

  2. Perl::Critic::Policy::Modules::ProhibitEvilModules para módulos o una regla personalizada Perl::Critic para una degradación más precisa en función o nivel de método. Este método está bien, pero no es obvio de inmediato por el código que está en desuso.

¿Alguna otra sugerencia o trucos acerca de cómo hacerlo de forma adecuada y fácil?

Respuesta

16

Para métodos y funciones, puede simplemente reemplazar el cuerpo de la función con una advertencia y una llamada a la función preferida.

perl perllexwarn da el siguiente ejemplo:

package MyMod::Abc; 

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

sub new { 
    # ... 
} 
1; 

Si está deprecating un módulo entero, poner el aviso en un bloque BEGIN en el módulo.

También puede colocar las advertencias en el método import (por ejemplo, Win32::GUI::import): todo depende exactamente de lo que desee hacer.

Cuestiones relacionadas