Usar ou não usar o this?

22 respostas
C

Meu problema é simples e não afeta o funcionamento do programa, quero saber isso por questão de convenção e para deixar o código mais bonito.
Não há nenhum problema com o nome do atributo ser igual o de uma variável, mas mesmo assim seria bom eu colocar o this?

public class Exemplo{
        int Ex = 0;
    public static void main (int[] args){
        Ex = 1;        //Usar ou não o this?
    }
    public void func(int Ex){
        this.Ex = Ex; //Aqui é obrigatório...
    }
}

É isso aí, acho que sou meio preguiçoso por não procurar isso no google, mas na verdade eu não sei nem qual “pergunta” formular para que o google me dê a resposta.

22 Respostas

rmendes08

Cara, isso vai muito do gosto do freguês. Particularmente, eu uso somente quando há a necessidade de eliminar ambiguidades.

Nicolas_Fernandes

Eu, particularmente, uso o this somente quando necessário, como no caso do seu método func. Já a palavra reservada super eu uso sempre, para identificar que o atributo ou método está na classe superior.

DoomGuy

Eu uso pq deixa o código mais “claro”, menos variáveis pra lembrar : )

daveiga

Eu sempre usei o this, pelo mesmo motivo do @DoomGuy, acho que assim fia ‘óbvio’ de quem estamos falando.
Mas quando eu troquei de emprego me surpreendi por que aqui ninguém usa ‘this’ e me acharam um ET quando me viram usando.
Acho que não há um padrão, use o que parecer mais confortável.

C

Pensei que pudesse haver algum tipo de “acordo informal” onde sempre se usasse o this, para deixar mais claro e tudo o mais…

Obrigado pelas respostas!

@NicolasFernandes

Como eu acesso atributo/método da superclasse sem usar o super? ‘-’

denisspitfire

Pow, this é d+. Uso sempre que possivel rs…

mateuscs

Sempre use por boa prática.

Os próximos programadores, irão ler melhor seu codigo. :wink:

vitordaumling

eu geralmente uso this no construtor, pra setar valores em variaveis da private da classe

mas no main é legal usar também pq melhora o entendimento do código. Embora, isso vai muito do desenvolvedor mesmo.

fantomas

Se vc utilizar um editor que não tem auxilio de cores para informar as visibilidades o “this” será de grande ajuda. Lembrando que mesmo com o notepad ou algo até mais rudimentar é possivel programar em java.

Além disso faz parte das boas praticas, raramente deixo de utilizar.

flws

discorpio

Boa tarde a todos.

Carinha:
Pensei que pudesse haver algum tipo de “acordo informal” onde sempre se usasse o this, para deixar mais claro e tudo o mais…

Obrigado pelas respostas!

@NicolasFernandes

Como eu acesso atributo/método da superclasse sem usar o super? ‘-’

Voce pode omitir a sintaxe “super”, para invocar um método da super classe, desde que este método não esteja sobrescrito na sub-classe (classe atual), bastando tão somente invocar o metodo atráves de sua assinatura. Agora se este método estiver sobrescrito na sub-classe (classe atual), ai voce terá que utilizar a sintaxe “super” para diferenciar o método da super classe com o metodo da sub-classe que esta sobrescrito.

Com relação ao atributo, vai depender com qual modificador voce o declarou dentro de cada classe, pois para ter acesso a atributos de super classe, voce tem que declará-los com o modificador “public” na super classe, e se voce declarar um atributo com o mesmo nome na sub-classe com o modificador “private”, ai é recomendavel usar o “this” para referenciar o atributo da classe atual, e o “super” para referenciar o atributo da super classe. Se voce declarar os atributos como “private” na super classe e nas sub classes, ai não necessidade de usar nem this e nem super, porque os da super classe voce não tem acesso a atributos com visibilidade “private”.

Quanto a uso da sintaxe “this”, isso realmente vai do gosto de cada um, porem acho que ele somente deve ser usado para diferenciar um atributo no escopo de método com o atributo do escopo de classe.

Um abraço

rmendes08

vitordaumling:
eu geralmente uso this no construtor, pra setar valores em variaveis da private da classe

mas no main é legal usar também pq melhora o entendimento do código. Embora, isso vai muito do desenvolvedor mesmo.

Não dá pra usar o this dentro do método main porque ele é static

vitordaumling

verdade rmendes08, realmente nao da pra usar o this no main!

não tinha me atentado a isso, to começando com java.

Valeu a dica!!

rafaelaalves

Rapaz se não tem necessidade é melhor vc não usar, mas quem faz o código é o programador ^^

j0nny

Não vejo necessidade, até porque, quem programa em Java, programa em uma IDE, e o Eclipse, por exemplo, deixa os atributos de outra cor :lol:
Acho que fica muito poluído pra tudo usar ‘this’.

Ivan_Alves

Eu também só uso o ‘this’ quando necessário para os casos de ambiguidade em SET já o ‘super’ é sempre, talvez seja preguiça mesmo, flw!

Ivan_Alves

quebrado

Raramente uso “this”. Geralmente é o eclipse que usa pra min. hahahah

saoj

rmendes08:

Não dá pra usar o this dentro do método main porque ele é static

Pensei que o pessoal ia ficar discutindo isso pra sempre… this dentro de método static não faz qualquer cabimento… O exemplo dado nem compila…

rogelgarcia

O problema maior não é nem usar ou não o this… (não existe padrão, eu por exemplo, só uso se necessário)

E sim variável começada com letra maiúscula

Isso é [size=18] [color=red]proibido[/color][/size] em Java.

Nome de variável deve ser começada com letra minúscula.

:wink:

A

Na verdade não há consenso que indique o uso ou não do this.

Há, na comunidade, uma longa e antiga discussão sobre isso que se baseia geralmente nesses dois pontos:

  • pró: torna claro o uso de atributos da classe
  • contra: aumenta a “verbosidade” do código.

Acho que o mais importante é definir um padrão no projeto onde trabalha e seguir com esse padrão.

WellingtonRamos

Boas práticas indicam que deve-se usar.
Eu não uso sempre, porém as vezes é extremamente necessário seu uso (bem como o uso de super).
Esse não é um dos casos opcionais em que, se puder evite, é o caso em que, se puder, use. Quem ler depois seu código terá certeza do que é o que (atributo de classe, variável, método de instância, método estático, etc).
Dependendo da codificação, isso pode evitar, também, possíveis ambiguidades (geradoras de bugs :wink: ), como quando cria-se uma variável (escopo local) com o mesmo nome de um atributo da classe.

WellingtonRamos

AbelBueno:
wellington.nogueira:

Boas práticas indicam que deve-se usar.

Na verdade não há consenso que indique o uso ou não do this.

Há, na comunidade, uma longa e antiga discussão sobre isso que se baseia geralmente nesses dois pontos:

  • pró: torna claro o uso de atributos da classe
  • contra: aumenta a “verbosidade” do código.

Acho que o mais importante é definir um padrão no projeto onde trabalha e seguir com esse padrão.


Concordo. Porém, pensando-se em boas práticas, é preferível um código um pouco mais “verboso” mas imediatamente compreensível que um código menos “verboso” mas que necessite de uma IDE com highlights para facilitar a compreensão (se estiver configurada e/ou puder ser).

Criado 23 de agosto de 2011
Ultima resposta 25 de ago. de 2011
Respostas 22
Participantes 18