Pular para o conteúdo

Boas Práticas – Dica nº 4

Olá

Nunca altere o estado dos objetos passados por parâmetro de um método, utilize uma variável temporária quando alterar o valor de algum atributo do objeto.

Essa prática é para evitar erros diante de uma confusão causada pelo tipo de passagem de valores que o Java adota. Java sempre faz a passagem por valor.

Abaixo um exemplo de erro que levamos a cometer quando alteremos o estado de um objeto.

Nós temos um objeto do tipo ItemPedido que possui os atributos quantidade e preço. Passamos esse objeto para o método totalizarPedido(), que para seu calculo interno subtrai um caso o parâmetro promoLeveUmGratis for true.

[sourcecode lang=java]if(promoLeveUmGratis){

item.setQuantidade(item.getQuantidade().subtract(BigDecimal.ONE));

}[/sourcecode]

Observe que estamos atribuindo o resultado da subtração no mesmo objeto que recebemos por parâmetro para o cálculo na linha abaixo.

[sourcecode lang=java]return item.getQuantidade().multiply(item.getPreco());[/sourcecode]

Em seguida os métodos calcularFrete() e darBaixaNoEstoque() são invocados.

[sourcecode lang=java]ex.totalizarPedido(ip, true);
ex.calcularFrete(ip);
ex.darBaixaNoEstoque(ip);[/sourcecode]

Coloquei alguns sysout´s para ilustrar o problema.

Quantidade de itens no pedido:   10

Quantidade de itens no frete:    9

Quantidade de itens a dar baixa: 9

Note que para os dois métodos seguintes a quantidade que chegou foi alterada, não era essa a intenção. Isso traria sérios problemas para nós.

Downloads: [Download não encontrado.] [Download não encontrado.]

Até mais,

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *