[Cascavel-pm] Legibilidade do map()... [Was: Duvida $dbh->prepare]

Nilson Santos Figueiredo Junior acid06 em gmail.com
Domingo Janeiro 28 17:25:32 PST 2007


On 1/28/07, Luis Motta Campos <luismottacampos em yahoo.co.uk> wrote:
>   OK, ok, voces me convenceram.
>   Vou parar de usar map() onde cabe foreach()...

Se o suposto ganho de performance foi o que te convenceu, então talvez
você devesse voltar a utilizar o map(), uma vez que ele é ~2% mais
rápido no caso geral.

A razão correta para se utilizar foreach() é semântica e por isto esta
forma é a recomendada, independentemente do ganho ou perda de
performance - ao contrário do que você deixou a entender (i.e. a
maneira com melhor tempo de execução nem sempre é a maneira
correta/recomendada).

Mas se eu entendi mal e você realmente entendeu a motivação por trás
da utilização de foreach() ao invés de map() - a semântica - então
pode desconsiderar esse email.

Vale lembrar que essa discussão é a mesma de "scalar @array" vs. "$#array + 1".
Por exemplo, para descobrir o número de itens contido em uma array e
salvar em uma variável, muitas pessoas poderiam escrever:

  my $ary_length = $#array + 1;

Enquanto a forma semanticamente correta seria:

  my $ary_length = scalar @array;

Ou ainda, de forma mais concisa e menos explícita:

  my $ary_length = @array;

Dessas ambigüidades originam uma boa parte do TIMTOWTDI da linguagem Perl.

-Nilson Santos F. Jr.


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