Como posso marcar código Perl como obsoleto?
-
19-09-2019 - |
Pergunta
No meu projeto eu estou actualmente a preparar um movimento passo-a-passo a partir do código legado para os módulos novos, devidamente projetados e testados. Uma vez que nem todos os programadores companheiro segue de perto o que eu faço, eu gostaria de emitir avisos quando código antigo é usado. Eu também prefiro fortemente ser capaz de recomendações de saída sobre a forma de código antigo porto.
Eu encontrei duas maneiras de fazer isso:
-
Atributo :: Deprecated , o que é bom para as funções, mas sim complicado se um módulo completo está obsoleta. Além disso, nenhuma informação adicional além de avisos.
-
Perl::Critic::Policy::Modules::ProhibitEvilModules
para os módulos ou talvez uma regraPerl::Critic
personalizado para depreciação mais fina na função ou nível de método. Este método é bom, mas não é imediatamente óbvio do próprio código que é obsoleto.
Qualquer outra sugestão ou truques como fazer isso corretamente e fácil?
Solução
Para os métodos e funções, você pode simplesmente substituir o corpo da função com uma advertência e uma chamada para a função preferida.
perl perllexwarn dá o seguinte exemplo:
package MyMod::Abc;
sub open {
warnings::warnif("deprecated",
"open is deprecated, use new instead");
new(@_);
}
sub new {
# ...
}
1;
Se você está depreciativo um módulo inteiro, coloque o aviso em um bloco BEGIN
no módulo.
Você também pode colocar os avisos no método import
(por exemplo Win32 :: GUI :: import ):. tudo depende exatamente o que você quer fazer