8
votes

Mérite / raisons d'utiliser "get" comme préfixe au nom d'une méthode d'accesseur

Je sais que dans Java, il est courant d'utiliser "GET" comme préfixe à une méthode accessive. Je me demandais ce que la raison pour cela est. Est-ce uniquement purement capable de prédire ce qu'il va de retour?

Pour clarifier: Dans certaines classes Java (par exemple, String ) Une longueur de longueur similaire à une variable peut être accessible en appelant "Longueur ()" plutôt que " taille () ". Pourquoi ces méthodes sont-elles écrites comme ceci, mais d'autres comme " getomevariable () "?

Merci pour votre temps.

EDIT: C'est bien de voir que je ne suis pas seul à la confusion et à la taille des variables de taille et de longueur


0 commentaires

6 Réponses :



7
votes

Parce que les propriétés sont des noms et des méthodes sont des verbes. Il fait partie du schéma de haricot bien établi et donc attendu par quiconque en utilisant votre classe.

Cela pourrait être logique de dire: P>

String txt="I have " + car.FuelLevel() + " liters of petrol.";


1 commentaires

Le boîtier dans vos exemples pourrait utiliser une fois de plus.



4
votes

Les conventions Get / Set sont tirées du Spécification de haricot Java . Donc, les gens ont fortement tendance à utiliser cela.

et le .Size (), .length (), et même l'attribut de la longueur des tableaux sont tous des exemples d'échecs de Java à suivre ses propres conventions. Il y en a beaucoup plus, c'est "amusant" de les découvrir!


0 commentaires

2
votes

Ils peuvent être des échecs pour la spécification, mais ils améliorent la lisibilité. La taille et la longueur vous permettent de lire la ligne de code suivante: xxx

comme ...

pendant que je suis moins que la taille de la chose ...

Il n'y a pas de vraie convention derrière cela, mais cela facilite la traduction d'une phrase directement.


0 commentaires

5
votes

Le préfixe est particulièrement utile si vous avez aussi définir , Ajouter , supprimer , etc., méthodes. Bien sûr, il est généralement préférable d'avoir une interface pleine de obtenir s ou plein de définir s. Si presque chaque méthode a obtenez alors cela devient simplement le bruit. Donc, je laisserais tomber le obtenir pour immutables et le fichier pour les constructeurs. Pour des types "fondamentaux", tels que des collections et des cordes, ces petits mots sont également bruyants, imo.


0 commentaires

1
votes

La raison historique était que la spécification javabean a déclaré que les accesseurs des propriétés de la classe devraient être effectués avec GetPropertyName / SetPropertyName. L'avantage était que vous pouvez alors utiliser des API d'introspection pour énumérer dynamiquement les propriétés d'un objet, même une personne que vous n'aviez pas encore compilée dans votre programme. Un exemple de là où cela serait utile consiste à créer une architecture de plug-in qui doit charger des objets et fournir à l'utilisateur l'accès aux propriétés de l'objet.

Vous avez des noms différents pour récupérer la taille dans différentes classes simplement parce qu'ils ont été écrits par différentes personnes et il n'était probablement pas au moment d'une ligne directrice de conception pour nommer des méthodes de classe de manière cohérente. Une fois que des millions de lignes de code avaient été écrits en utilisant ces noms incohérents, il était trop tard pour changer.


0 commentaires