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

Nilson Santos Figueiredo Junior acid06 em gmail.com
Quarta Maio 30 12:14:21 PDT 2007


On 5/30/07, Luis Motta Campos <luismottacampos em yahoo.co.uk> wrote:
>    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).

Na verdade, o ideal mesmo é declarar variáveis quando for utilizar. No
gcc, existe uma diferença de performance entre os seguintes códigos:

  int func (int a, int b) {
    int x, y, z;
    x = a;
    y = b;
    z = x + y;
    return z;
  }

e

  int func (int a, int b) {
    int x = a;
    int y = b;
    int z = x + y;
    return z;
  }

O segundo deve ser ligeriamente mais rápido. Aliás, nesse caso
simples, talvez o otimizador acabe otimizando as duas coisas pra mesma
coisa. Mas supondo uma função com corpo maior, mesmo com o mesmo
escopo, ele conseguirá otimizar melhor se a variável tiver sido
declarada mais perto de onde é utilizada.

Além disso tudo, eu, particularmente prefiro assim. ;-)

Pra mim, declarar em um lugar e só atribuir em outro é algo feio e que
me faz lembrar programadores acostumados com linguagens não-modernas.

Então, normalmente, meu código será assim:

  sub method {
    my ($self, @args) = @_;
    my $value = $self->another_method(@args);
    my $another_value = $value->yet_another_method;
    return $self->baz($another_value);
  }

ao invés de algo como:

  sub method {
    my ($self, @args) = @_;
    my ($value, $another_value);
    $value = $self->another_method(@args);
    $another_value = $value->yet_another_method;
    return $self->baz($another_value);
  }

Mas isso acho que é só uma questão de preferência. Mas quando eu vejo
um "bloco de declaração de variáveis" eu já fico ressabiado com o
código.

-Nilson Santos F. Jr.


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