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

Dúvida sobre Getters

Na parte da opinião do instrutor ao verificar essa parte do código:

public int getDuracaoEmMinutos() {
        return this.duracaoEmMinutos;
    }

Verifiquei que no return aparece em seguida o this. Porém, quando geramos os getters automaticamente pelo InteliJ utilizando o atalho alt + insert Ele gera o código da seguinte forma:

public int getDuracaoEmMinutos() {
        return duracaoEmMinutos;
    }

Depois do return não aparece o this. Observei essa divergência em todos os getters da opinião do instrutor. Isso é apenas uma boa prática de programação? Ou faz alguma diferença em relação a qual atributo está sendo selecionado?

2 respostas

quando voce usa o this voce esta fazendo referencia a propria classe. Pois voce pode receber uma variavel como parametro do metodo e ela pode ter o mesmo nome. entao usa-se o this para isso. para fazer referencia a variavel da classe a nao do metodo. Nesse caso, nao faz diferenca nenhuma, é apenas padrao mesmo adotado. um exemplo é um metodo contrutor

public class Contato {
    private String nome;
    private String celular;
    private String email;
    
    public Contato(String nome, String celular. String email) {
        this.nome = nome;
        this.celular = celular;
        this.email = email;
    }
}
solução!

Olá, Ramon!

A diferença entre usar 'this.duracaoEmMinutos' e apenas 'duracaoEmMinutos' no contexto de um getter é principalmente uma questão de estilo e clareza de código. Ambas as formas são válidas, mas podem ser mais apropriadas em diferentes situações. Vou explicar as considerações principais:

Uso de this explícito: Usar this.duracaoEmMinutos torna explícito que você está acessando o atributo da instância atual da classe. Isso é particularmente útil quando há nomes de variáveis locais, parâmetros de método ou outros escopos que possam ter o mesmo nome do atributo da classe. A clareza é o principal benefício aqui, pois fica claro para você e para outros desenvolvedores que a variável duracaoEmMinutos é um atributo da classe, não uma variável local.

Acessar diretamente o atributo: A forma mais concisa, duracaoEmMinutos, é possível porque a linguagem Java permite que você acesse diretamente os atributos da instância atual da classe sem usar this. No entanto, isso pode se tornar confuso em situações onde há nomes semelhantes em diferentes escopos. Além disso, em algumas situações, pode haver ambiguidade entre o atributo da instância e uma variável local ou parâmetro com o mesmo nome.

Ambas as abordagens são aceitáveis, mas a prática recomendada varia de acordo com as convenções de estilo do código. Algumas equipes preferem sempre usar 'this' para referenciar atributos de instância, para evitar qualquer ambiguidade ou confusão. Outras equipes podem optar por não usar 'this' quando não há ambiguidade, a fim de manter um código mais limpo e conciso.

No caso específico dos getters gerados automaticamente pelo IntelliJ (ou por outras ferramentas), elas geralmente optam pela forma mais concisa por padrão, assumindo que não haverá ambiguidade. Se você preferir usar o this explícito por uma questão de clareza, você pode modificá-lo manualmente após a geração automática.