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

Quando utilizar this

Boa noite,

Percebi que em muitos casos é opcional o uso do this para acessar um atributo da classe. Aliás, tive a impressão de que para acessar atributos da própria classe, o uso do this é sempre opcional, não sei se estou errado.

Percebi que é principalmente utilizado nos construtores para evitar que o parâmetro do construtor "sombreie" o atributo da classe.

Também me recordo de ter lido em algum lugar que o this pode ser utilizado para chamar um segundo construtor de dentro de outro construtor.

Mas especificamente sobre o acesso a atributos da classe, estou certo em pensar que o uso do this é sempre opcional? Existe algum padrão a ser seguido sobre quando ou não utilizá-lo?

7 respostas
solução!

Pedro, você está no caminho certo, está certissimo, o uso do this, é opcional, usamo ele sempre para referenciar ATRIBUTOS DA CLASSE, e não qualquer variavel que se cria dentro de metodo...

Por exemplo.

public class Exemplo {
    private String nome;

    public void adicionarNome(String nome) {
        this.nome = nome;
    }
 }

Como pode ver minha classe tem um atributo nome, sempre que eu for referenciar ESSE ATRIBUTO da minha Classe, usamos a palavra this, sim é opcional, mais nesse caso se eu retirar o this, o java irá entender, que estou passando o nome no parametro do metodo e atribuindo para essa mesma variavel.

Resumindo o uso do this é opcional, mais é sempre uma otima acostumar com o this.

Alisson, obrigado pela resposta, entendi bem o que quis dizer, porém, existe algum padrão/boa prática?

Existem empresas que sempre utilizam o this? Ou empresas que somente usem-no nesses casos do parâmetro estar nomeado da mesma maneira que um atributo?

Pedro, isso não vai de empresa pra empresa, esta mais para padrão que voce vai usar.

Voce usa o 'this' quando quer referenciar algo que esta acima, então dependendo do caso voce vai ter que usar o 'this'.

Nessse exemplo:

public class Exemplo {
    private String nome;

    public void adicionarNome(String nome) {
        this.nome = nome;
    }
 }

voce usa o this.nome porque voce esta se referindo ao nome da classe 'private String nome' e não ao parametro do metodo adiciionarNome que seria o '(String nome)'.

Voce poderia fazer o seguinte:

public class Exemplo {
    private String nome;

    public void adicionarNome(String nome) {
    if(nome =! null){ // aqui estou chamando o parametro nome de adicionarNome
    nome = "Rafael"
}  

this.nome = nome; // aqui estou chamando o nome da classe

    }
 }

Pedro isso vai de empresa a empresa, mais trabalhei em uma que usava o this sim, na minha opnião, empresa sempre segue o padrão de boas praticas ao desenvolver, e acho bom você se acostumar, até porque tem caso que você vai ter que usar para não conflitar algum paramtro do metodo com algum atributo da sua classe.

A utilização do this é opcional, contudo deve ser encorajada para manter o codigo mais limpo e claro:

public class Pessoa{ private String name; public void setName(String name){ name = name; } }

Bom como esse pedaçõ de codigo é pequeno, é muito facil de ver que o mesmo tem um codigo muito ruin, contudo imagine esse codigo fazendo parte de uma classe com 1500 linhas de codigo, isso fica muito mais dificil de ver tornando a manutenção muito complicada, por isso é bom sempre usar o this pois mantem o codigo mais claro e evita um problema chamado de sombreamento de variaveis.

assim como é sempre bom usar '{' e '}' em ifs mesmo que só tenha uma instrução.

Obrigado pelas respostas, me parece que a tendência aqui pelo que li é mais a favor do uso do this. Eu particularmente prefiro utilizar o this sempre, talvez porque eu tenha me acostumado com os cursos de JavaScript.

Já sobre os ifs de uma instrução eu prefiro deixar sem o bloco de chaves, porém com uma quebra de linha a mais.

Enfim, essas discussões de boas práticas são meio complicadas, acho importante, mas talvez não devamos pensar exageradamente sobre isso.

Mais uma vez, obrigado a todos!

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