2010-11-02 6 views
3

L'utilisation suivante de "this" pour faire référence à une variable d'instance dans la classe actuelle est-elle acceptable? En PHP, c'est comme ça que vous devriez le faire, mais j'ai remarqué qu'en Java, vous pouvez simplement appeler la variable par son nom directement.Utilisation conventionnelle de "this" dans une classe Java pour faire référence à une variable d'instance

Personnellement, je trouve que «this.variable» est plus compréhensible, mais je ne veux pas développer de mauvaises habitudes de codage si ce n'est pas normal.

Merci!

public class MyClass { 

    /** 
    * Private variable 
    */ 
    private int myInt; 

    /** 
    * Setter method 
    */ 
    public void setMyInt(int value) { 
     this.myInt = value; 
    } 
} 
+0

L'acceptabilité dépend strictement de vos directives de style car exactement le même code est généré de toute façon. Certains l'exigent, d'autres l'interdisent, et très probablement ne s'en soucient pas. – Gabe

Répondre

7

Comme les gens l'ont dit, ce n'est pas obligatoire, mais c'est acceptable.

Cela étant dit, il est nécessaire que si vous faites quelque chose comme ceci:

private int value; 

public void setValue(int value) { 
    this.value = value; 
} 

Ce qui différencie entre la variable de classe et le paramètre du même nom. Je me retrouve en train d'utiliser ce pattern dans presque tous les setters que je crée, et c'est à peu près la seule fois où j'utilise le mot-clé 'this'.

1

Ceci est une pratique parfaitement acceptable en Java, bien que ce ne soit pas obligatoire (comme vous l'avez mentionné).

0

Utilisez-le ou non, soyez juste cohérent dans toute la base de code. Vous devez l'utiliser si la variable est masquée (par un argument ou une variable de méthode locale)

0

À moins que votre lieu de travail ou votre projet ne comporte un guide de style, il est expressément interdit d'utiliser this de cette manière, je dirais que vous re faire est parfaitement bien. J'utilise personnellement this uniquement lorsque cela est strictement nécessaire (par exemple, lorsque j'initialise une variable d'instance avec un paramètre de méthode du même nom), mais j'ai vu beaucoup de code qui utilise toujours this pour référencer les membres. Il pourrait être plus lisible, et il n'est certainement pas beaucoup moins lisible, alors allez-y!

1

J'écrire votre code comme ceci:

public class MyClass { 

    private int myInt; 

    public void setMyInt(int myInt) { 
    this.myInt = myInt; 
    } 
} 

La différence est à la vôtre (à côté avoir enlevé Javadoc inutile) que dans mon code le paramètre a le même nom que la variable membre. Les autres utilisateurs préfèrent donner à la variable membre un nom différent du paramètre, mais nous préférons préfixer les variables membres si nécessaire avec this. en raison de l'équilibre visuel. En plus de 10 ans de codage Java utilisant cette norme, nous n'avons jamais eu de bogue causé par l'utilisation de la mauvaise variable.

+0

Je suppose que je tombe dans le camp de préférer mes paramètres pour avoir un nom différent, car cela m'aide à comprendre ce que je suis en train de régler. Désolé pour les documents excédentaires. – james

+1

Comment nommez-vous les paramètres si une méthode en a plusieurs? 'value1',' value2', 'value3', ...? L'alternative consiste à préfixer (ou suffixer) les paramètres ou les variables membres avec quelque chose. Mais pourquoi inventer un nouveau préfixe s'il y en a déjà un - 'this.'? – Mot

Questions connexes