[Cascavel-pm] [Spam] Re: [Spam] Re: PrincipaisContribuidoresCascavelPM

Luis Motta Campos luismottacampos em yahoo.co.uk
Quarta Maio 30 01:17:26 PDT 2007


On May 28, 2007, at 5:05 PM, André Garcia Carneiro wrote:
>> Esta não é uma justificativa muito boa, pois, em geral, o tempo de
>> alocar e desalocar a variável tem um impacto muito menor do que
>> *qualquer outra coisa* que você faça a seguir.
>
> Talvez não no caso dele, mas se houvessem muitas iterações(muitas  
> mesmo),  você há de concordar que é
> desnecessário alocar variáveis dentro de iterações...

   Eu não acho, André. Mesmo pensando em termos de aplicações para  
BioPerl, que são data-hogs monstruosos, eu me certificaria que todas  
as variáveis estivessem alocadas nos menores escopos possíveis,  
inclusive dentro de loops.

   O Nélson está correto quando afirma que isto economiza / 
brainpower/ do programador sem gastar CPU.

>> No exemplo em questão, onde temos uma chamada realmente lenta dentro
>> do loop, pode-se dizer que este tempo é desprezível.
>
> Novamente, no caso dele não... por isso eu disse 'evite', e não  
> 'não use'...

   Eu acho que o melhor seria dizer "não use" para variáveis  
declaradas do lado de FORA de loops.
   Se você precisa de um resultado calculado em múltiplos passos,  
tudo bem. Caso contrário, procure declarar suas variáveis onde elas  
vão levar menos tempo para serem "reclamadas" de volta pelo Perl.

>>> Mas a questão é mais por organização(claro que isso depende do seu
>>> ponto-de-vista também), mas eu
>>> pessoalmente prefiro alocar as variáveis que eu vou precisar no
>>> início da subrotina, onde(para mim) fica mais
>>> fácil encontrar e porque costumo reservar esse espaço para fazer
>>> comentários nas minhas variáveis, ao invés de
>>> espalhar os comentários pelo código.
>>
>> Este é um hábito que você deveria rever.
>
> Na sua opinião...

   Claro que é na opinião dele, André. Todo mundo aqui é grandinho e  
sabe se cuidar.
   Mas é a minha opinião também. A gente está apenas querendo  
ajudar. :-)

>> Declare as variáveis no menor escopo possível, de forma que elas não
>> sejam usadas por mais tempo do que o necessário (tanto do ponto de
>> vista do computador, quanto do programador -- ao restringir o escopo,
>> você deixa de se preocupar com os efeitos colaterais de uma  
>> variável).
>
> Pra mim sempre vai ser no mínimo esquisito alocar variáveis dentro  
> de iterações.

   Pode parecer esquisito no começo, mas você vai ver como isso te  
economiza tempo e paciência mais adiante. ;-)

>> Em resumo:
>>
>> Não ajuda em termos de performance, e prejudica em termos de
>> organização.
>
> Ajuda no desempenho em casos que se haja muita iteração, e ajuda na  
> organização para mim, poi s não fico
> espalhando 'my $var;' para todo o canto da minha subrotina.
>
> Mas ainda bem que cada um tem direito a sua opinião por aqui... :-|

   Não é "para todo canto". Tem alguns casos apenas em que isso é  
útil. A regra deixa de ser "na cabeça da subrotina" e passa a ser "na  
cabeça de qualquer bloco sintático". É uma "medida clássica", que  
começou a ser divulgada quando a ANSI normalizou a linguagem C. Todos  
os compiladores ANSI C reclamam quando você declara variáveis sem ser  
no início de um "bloco sintático". E Perl segue a mesma convenção  
(que deve ter uns 40 anos, pelo menos).

   Putamplexos!
--
Luis Motta Campos (a.k.a. Monsieur Champs) is a software engineer,
Perl fanatic evangelist, and amateur {cook, photographer}




Mais detalhes sobre a lista de discussão Cascavel-pm