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

Luis Motta Campos luismottacampos em yahoo.co.uk
Quinta Maio 31 01:31:20 PDT 2007


On May 31, 2007, at 12:40 AM, Eden Cardim wrote:
> On 5/30/07, Nilson Santos Figueiredo Junior <acid06 em gmail.com> wrote:
>> Na verdade, o ideal mesmo é declarar variáveis quando for utilizar.
> <snip>
>> 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.
>
> Eu concordo 100% contigo, porém, toda regra tem suas excessões.
> Coincidentemente, tive que abrir uma excessão a essa regra hoje:
>
>     my $item;
>     my $some_rs = $c->model('Data::SomeTable');
>     do {
>         $item = $some_rs->next;
>         return unless $item;
>         } while ( $c->model('Data::AnotherTable')
>         ->find( $item->somefield, { key =>  
> 'another_table_somekey' } ) );
>
>     # fazer algo com $item aqui
>
> Aqui, não pude declarar a variável dentro do bloco porque eu preciso
> usar ela depois de terminado o loop. Tem outras formas de fazer, já
> inicializando $item, mas todas as alternativas que eu consegui
> imaginar levaram a algum tipo duplicação ou outras "deselegâncias" no
> código.

   Ui. Feio, muito feio.
   Vamos ver se eu consigo ajudar:

   1. Inverta o "while" para a posição correta; Eu não sei qual é a  
tua condição de parada.
   2. Me parece que você está buscando alguma coisa numa base de  
dados. Por quê não percorrer diretamente no campo "next"?
   3. Nunca use "return" se você não está numa sub (isto é uma parte  
de uma subrotina?).

   Quando eu entender isso, vou conseguir resolver para você.
   Mas eu tenho certeza de que consigo refactorar isso para você de  
uma maneira mais elegante.
   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