Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

TDD - Dúvida

Não entendi a construção do metodo dobraLance abaixo. Por que foi atribuido null para a variável ultimo do tipo Lance? O acesso aos métodos e atributos dessa variavel não retornariam erro NullPointerException?

''' public void dobraLance(Usuario usuario) { Lance ultimo = null; for(Lance lance : lances) { if(lance.getUsuario().equals(usuario)) ultimo = lance; }

propoe(new Lance(usuario, ultimo.getValor()*2)); }'''

2 respostas
solução!

E aí, Rozenildo!

Curso: Testes TDD com C#

Aula: 3. Praticando Test Driven Development

Exercício: Dobrando o lance anterior

Na resposta que foi dada pelo instrutor, um pouco mais abaixo na tela, ele faz uma alteração no código para que não ocorra este erro que você apontou.

public void DobraLance(Usuario usuario)
{
    Lance ultimoLance = ultimoLanceDo(usuario);
    if (ultimoLance != null)
    {
        Propoe(new Lance(usuario, ultimoLance.Valor * 2));
    }
}

Até mais!

Veja : um usuário pode não ter feito nenhum lance , ou, ter feito pelo menos algum lance. Se o usuário fez algum lance , ele fez ou 1 (um) ou 2 (dois) ou 3 (três), ou 4 (quatro) ou 5 (cinco) , e no máximo 5 (cinco), lances, ok ? No caso do usuário ter feito pelo menos algum lance, então, quando buscamos o último lance desse usuário na lista de lances do leilão, haverá um lance desse usuário nos lances que NÃO É NULL. Reciprocamente, se buscamos o último lance do usuário nos lances do leilão e encontramos algum lance que NÃO É NULL então o usuário fez pelo menos algum lance. Entende?No caso do usuário NÃO ter feito nenhum lance, então, quando buscamos o último lance desse usuário na lista de lances do leilão, NÃO HAVERÁ nenhum lance desse usuário nos lances. Reciprocamente, se buscamos o último lance do usuário nos lances do leilão e não encontrarmos nada, se for nula nossa busca, então o usuário não fez ainda nenhum lance. Entende? Por isso a variável Lance ultimo foi inicializada com null, pois se após se buscar o último lance do usuário a variável ultimo ainda for igual a null significará que o usuário ainda não tinha dado nenhum lance, entende ?