2
respostas

Dúvida com uso do this

Olá O this pode ser utilizado junto com métodos ou somente com parâmetros?

por exemplo no método transfere está:

public boolean transfere(double valor, Conta destino) { if(this.saldo >= valor) { this.saldo -= valor; destino.deposita(valor); return true; } return false; }

o this.saldo -=valor; pode ser substituído por this.saca(valor); ??

Testei e compilou normalmente, mas gostaria de saber se é uma boa pratica o uso do this dessa maneira?

Obrigado

2 respostas

Sim, é uma boa prática reutilizar métodos da própria classe, pois evita duplicação de código dentro da classe. É até comum criar métodos privados para uso dentro de outros métodos (tanto públicos como privados). No exemplo, é melhor ter somente um ponto que deduz um valor do saldo, que no caso seria o método saca, pois quando tivermos de implementar uma regra de negócios qualquer, como verificar se o saldo é suficiente, sabemos exatamente onde colocar a regra. Quanto ao uso da palavra this - é como o instrutor falou no caso dos atributos - é opcional, mas eu pessoalmente acho que é bom por trazer mais clareza ao código- você está deixando explícito que está chamando um método da própria classe.

O this pode ser utilizado tanto com métodos quanto parâmetros. Também pode ser usado sozinho para referênciar o próprio objeto.

O uso do this é opcional neste seu caso mas eu considero que ele oferece legibilidade. Já que ao ver esta palavra-chave eu já espero algo referente ao próprio objeto.

Sobre alterar diretamente com o this.saldo ou usar o método saca, é sempre preferível usar o método, pois ele aplica as regras de negócio e programação defensiva que garantem que seu saldo será sempre validado pelo método antes de ser alterado. Um exemplo é se você receber um valor negativo e o seu saldo aumentar em vez de diminuir; ou um valor maior que o saldo e seu saldo ficar negativo, são situações que podem ser tratadas em um lugar só, o método saca.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software