2013-02-15 2 views
0

quel est le moyen le plus préféré pour obtenir des variables privées au sein de la même classe.Obtenir une variable privée dans sa propre classe avec getter ou directement avec le nom?

par exemple, nous avons ce code:

public Class TestClass 
{ 
    private String name; 

    public String getName() 
    { 
     return name; 
    } 
    public void setName(String name) 
    { 
     this.name = name; 
    } 

...

public String someMethod() 
    { 
     return getInfo(name); 
     or 
     return getInfo(getName()); 
    } 
} 

...

si ce qui est la façon dont preferred, pour obtenir la variable privée au sein de la même classe avec son nom ou avec son getter?

Mise à jour: Le getter retournera toujours le nom.

+0

Je préfère le premier –

+0

duplicata possible de [Conventions Java: utiliser les getters/setters dans la classe?] (Http://stackoverflow.com/questions/8466790/java-conventions-use-getters-setters-within-the -class) – lindelof

Répondre

1

Eh bien, je pense que c'est une question liée aux préférences/situations. Si vous appelez directement le champ, vous obtiendrez un meilleur temps car vous ne faites pas un appel de méthode supplémentaire qui est très rapide de toute façon, et peut-être un peu plus concis. Mais si vous utilisez un getter, vous pouvez ajouter une autre couche d'abstraction, et faire quelques autres trucs là-dedans, comme un retour une autre valeur au lieu de la valeur par défaut est le champ est pas défini, quelque chose comme:

int getAge() { 
    return (age < 18) ? 18 : age; 
} 

De plus, cette volonté aider dans le cas d'objets pour éviter de retourner nulle, comme:

Stuff getStuff() { 
    if(stuff == null) { 
     return Stuff.NULL_OBJECT; 
    } 
} 

S'il vous plaît prenez garde que Stuff est ma classe et le champ NULL_OBJECT est une implémentation de modèle d'objet nul, et mon exemple ne dispose pas de synchronisation. Cela étant dit, j'utilise toujours l'approche d'accès direct au champ si la situation ne nécessite pas quelque chose d'extravagant.

1

La préférence dépend du contexte. Dans votre cas ci-dessus où le getter renvoie simplement la variable, de nombreux développeurs auront tendance à retourner la variable directement. Cependant, si votre getter est plus compliqué ou si vous pensez qu'il pourrait changer dans le futur, alors l'utilisation du getter pourrait être préférée. Tout dépend de ce que name représente, ce que getName() renvoie et ce que attend getInfo(...).

+0

Le getter renvoie simplement le nom n'importe quel cas, n'importe quand. Quel est le meilleur approche? – ZeDonDino

+0

Mon point ici est que mieux est subjective. Si vous vous attendez à ce que votre getter change ou devienne plus compliqué à l'avenir, cela pourrait être un meilleur choix. Si tout ce que vous faites avec le getter est de garder le champ, alors, personnellement, je dirais que l'accès direct au champ est plus lisible. –

+0

Merci pour votre réponse complète – ZeDonDino

Questions connexes