Devel :: Warglobal.

extensão perl para ajudar na eliminação de globais
Baixe Agora

Devel :: Warglobal. Classificação e resumo

Propaganda

  • Rating:
  • Licença:
  • Perl Artistic License
  • Preço:
  • FREE
  • Nome do editor:
  • Stephen Nelson
  • Site do editor:
  • http://search.cpan.org/~stephen/Video-Xine-0.17/lib/Video/Xine.pm

Devel :: Warglobal. Tag


Devel :: Warglobal. Descrição

Extensão perl para ajudar na eliminação de globais DEVEL :: Warnglobal é uma extensão perl para ajudar na eliminação de globais.synopsis Use Devel :: Warglobal $ Foo => get_foo, $ Bar => ; USE DEVEL :: Warglobal :: Scalar; Tie $ global, 'DEVEL :: Warnglobal :: Scalar', {get => get_global}; um programa cheio de variáveis globais pode ser uma coisa de flexão mental para depurar. Eles vêm em várias formas e tamanhos. Algumas são variáveis de pacotes exportadas por padrão. Alguns são acessados diretamente usando o '$ modulename :: global' sintaxe.most programadores experientes concordam que usar variáveis globais é uma coisa ruim em grandes programas, já que ambos adicionam à complexidade do programa e podem introduzir erros sutis. Os globais introduzem a complexidade porque aumentam o número de coisas que você precisa para manter em sua cabeça em um determinado momento. ("O que diabos é de $ Frobozz deveria ser novamente?") Eles podem introduzir erros sutis porque se um pedaço de código disser acidentalmente se ($ thnee = 34) quando eles pretendem dizer se ($ thnee == 34), então outro O pedaço de milhas de código distante poderia quebrar, e você terá que caçar por todo o programa para o bug. Isso pode ser muito demorado! O remédio padrão para variáveis globais desenfreados é escrever sub-rotinas que retornam as informações que o global deve conter. Por exemplo, se você tiver um global como assim: $ palhaço = "bozo"; então você pode escrever uma sub-rotina como esta: sub get_clown {retorne "bozo"; } e substitua todas as instâncias de $-palhaço com get_clrown (). Se em algum momento do programa, mudamos para um palhaço diferente, você pode escrever um método set_clrown () e alterar qualquer declaração '$ palhawn = "binky"' para 'set_clown ("Binky")'. Para o curioso, uma maneira de fazer isso seria: começar {meu $-palhaço = 'bozo'; sub get_clrown () {retorne $ palhaço; } sub set_clown {my ($ new_clown) = @_; $ palhaço = $ new_clown; }} Escrever uma função 'definida' reintroduz alguns dos problemas de ter a variável global em primeiro lugar, uma vez que a chamada Set_Clown () em uma parte do programa pode causar problemas em um determinante código. No entanto, você realizou várias coisas boas. Primeiro, uma chamada 'set_clown' é mais fácil de detectar do que uma declaração '$ Clown = Foo'. Em segundo lugar, você pode colocar controles de acesso em set_clown () para se certificar de que Get_clOwn () sempre retornará um palhaço válido. E em terceiro lugar, torna-se mais fácil fazer get_clrown () e set_clown () em métodos de classe. Então você poderia ter ligações como $-CIRC-> get_clown (), tornando mais fácil separar as coisas relacionadas a circo de não-circo stuff.globals podem ser indescritíveis. Pode ser difícil encontrá-los e demorado para substituí-los todos de uma vez. Devel :: Warnglobal é projetado para facilitar o processo. Depois de escreveu sua função 'Get', você pode amarrar essa variável para a função, e a variável sempre retornará o valor da função. Isso pode ser valioso durante o teste, uma vez que serve para verificar se você escreveu seu novo 'get'-função corretamente. A fim de traçar os usos do Global Global, Devel :: Warnglobal pode fornecer avisos sempre que o global for acessado. Esses avisos estão por padrão; Eles são controlados pelo parâmetro 'warn'. Além disso, pode-se ligar e desligar os avisos com o método Warn () no objeto amarrado. Se 'Die_on_Write' estiver definido, Devel :: Warnglobal vai morrer se uma tentativa for feita para gravar em um valor sem o método 'set' definido. (Caso contrário, o método 'Set' produzirá um aviso, mas não terá nenhum efeito sobre o valor.) Como uma conveniência, você pode amarrar variáveis na linha "Uso" com Devel :: Warglobal. Ou, você pode usar o Módulo Devel :: Warnglobal :: Scalar diretamente. Requisitos: · Perl.


Devel :: Warglobal. Software Relacionado