Sobre a legibilidade do código:
http://craftnicely.blogspot.com/2009/09/voce-comenta-seu-codigo.html

Abraço

Peter P. Lupo
Undergraduating in Computer Science DCC/UFRJ
MPS.BR Authorized Implementation Practitioner
Sun Certified Java Associate
http://sites.google.com/site/pplupo
Cell. +55 (021) 81742487


2009/9/28 Peter P. Lupo <[email protected]>

> Nenhuma das formas que vc citou é errada.
> Nenhuma faz diferença em termos de memória.
>
> Vc tem que lembrar que "agenda" é um monte de referências para os objetos
> que estão na memória. Um deles é um ArrayList de telefones que é outro
> conjunto de referências para outros objetos na memória (no caso, telefones).
>
>
> Quando vc faz
>
> ArrayList<Telefone> temp = agenda.get(nome);
>
> Na prática vc está criando mais uma referência para o mesmo ArrayList (uma
> dentro de agenda e outra que vc chamou de "temp"). Você não está criando uma
> cópia de ArrayList. Então o consumo de memória a mais é irrisório.
>
> Quanto a desempenho a questão é mais complicada.
>
> Em via de regra, seu foco deve ser fazer um código legível. O máximo
> possível. SE vc tiver problema de desempenho (o que vc só sabe depois que
> rodar com a carga esperada de usuários e objetos criados simultaneamente) é
> que vc deve alterar o código de forma a ganhar desempenho prejudicando a
> legibilidade o mínimo possível, até atingir o desempenho desejado.
>
> Aqui:
>
> for(int i = 0;i < agenda.get(nome).size(); i++)
>
> Pra cada iteração vc está procurando o arrayList dentro da agenda e o size
> do arrayList, o que, de fato, vc poderia fazer de uma vez só.
>
> O HashMap, não sei se o professor explicou, é uma estrutura que acha o que
> vc pediu sem percorrer. Ela vai direto na posição onde estaria caso vc
> tivesse adicionado e se tiver alguma coisa é ele, se não tiver nada não tem
> no HashMap. Logo, o custo é pequeno. Se fosse outra estrutura que tivesse
> que ser percorrida, o desempenho ficaria pior.
> O size é mantido num atributo interno conforme vc adiciona e remove, logo
> ele também não conta. Só retorna o valor.
>
> O que eu faria:
>
> ArrayList<Telefone> telefones = agenda.get(nome);
> for(int i = 0;i < telefones.size(); i++) {
> }
>
> Só uma observação, vcs vão aprender o enhanced for, com o qual poderão
> fazer simplesmente:
>
> for (Telefone telefone : agenda.get(nome)) {
>     System.out.println(telefone);
> }
>
> Abraço!
>
> Peter P. Lupo
> Undergraduating in Computer Science DCC/UFRJ
> MPS.BR Authorized Implementation Practitioner
> Sun Certified Java Associate
> http://sites.google.com/site/pplupo
> Cell. +55 (021) 81742487
>
>
> 2009/9/28 Raul Barbosa <[email protected]>
>
> Olá,
>> Estava fazendo a lista e tive uma dúvida (na verdade, mais uma
>> curiosidade).
>> Seguinte:
>> Fazer algo desse jeito, isto é, chamar várias vezes o método:
>>
>>  for(int i = 0;i < agenda.get(nome).size(); i++)
>>             {
>>
>> }
>>
>> Ou isso(atribuir valores a variaveis)
>>
>> ArrayList<Telefone> temp = agenda.get(nome);
>> int tamanho = temp.size();
>> for(int i =0; i < tamanho;i++)
>> {}
>>
>> Eu exagerei, já que poderia simplesmente obter o int tamanho numa linha
>> só, mas isso seria fazer um meio-termo entre essas duas maneiras acima
>> descritas.
>> Existe algo que possa ser considerado melhor em termos de uso de memória
>> ou tempo de execução ou mesmo errado/correto em termos de
>> linguagem/convenção? (aparentemente tudo resultou no mesmo aqui)
>>
>> Abraços
>>
>>
>> --
>> Raul B. Barbosa
>>
>> >>
>>
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Comp 
2 - Geral" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/comp2-geral?hl=en
-~----------~----~----~----~------~----~------~--~---

Responder a