Pourquoi Java noms de méthode utiliser le "get" préfixe de façon extensive? Au moins dans mes programmes Java il y a beaucoup de méthodes dont le nom commence par le mot "obtenir". Le pourcentage de méthodes est étrangement élevé. Je commence à penser que le mot "get" est en train de perdre son sens à cause de l'inflation. C'est le bruit de mon code.
J'ai remarqué qu'il y a une autre convention de nommage utilisée fonctionnelle/programmation déclarative et PL/SQL. Le nom de la méthode indique simplement que le retour de la méthode. Au lieu de account.getAmount()
ou Time.getIsoFormattedDateString(Date date)
ils utiliseront account.amount()
et Time.isoFormattedDateString(Date date)
. Cela fait beaucoup de sens pour moi, que le nom de la fonction qui décrit le résultat de l'évaluation de la méthode (s'il n'y a pas d'effets secondaires, qui ne doit pas l'être de toute façon). Le "get" préfixe semble superflu.
Je viens de commencer la lecture du livre "Code Propre". Il est dit que les méthodes doivent faire une seule chose et que cette chose doit normalement être l'un des suivants:
- Informer un objet sur un événement, généralement de passer l'évènement en tant que paramètre.
- Poser une question à propos d'un objet, généralement avec le nom de la méthode formant un énoncé en langage naturel, en passant de l'objet en tant que paramètre et retournant une valeur de type boolean.
- Chercher quelque chose, probablement passer un peu de recherche clés, ou d'un objet à être converties en tant que paramètre et retournant toujours l'objet désiré/valeur.
Ma question est à propos de la troisième catégorie. Existe-il des conventions de nommage, d'autres que "get" pour ce genre de méthodes? Quels critères utilisez-vous lors du choix des noms de méthode/préfixes?
Voici un exemple:
J'ai une classe avec deux méthodes d' getDates()
et getSpecialDates()
. getDates()
retourne simplement la valeur d'une variable privée (la référence à une collection de dates). C'est un getter, ce que je comprends. getSpecialDates()
"est différent; il appelle getDates()
, extrait d'un filtre d'une autre classe, applique le filtre et renvoie de ce qui est effectivement un sous-ensemble de l' getDates()
.
La méthode getSpecialDates() pourrait être nommé computeSpecialDates()
, findSpecialDates()
, selectSpecialDates()
ou elicitSpecialDates()
ou quoi que ce soit. Ou je pourrais simplement le nom de il specialDates()
. Et puis, pour des raisons de cohérence, je pourrais renommer getDates()
en dates()
.
Pourquoi la peine de la séparation entre les méthodes qui doivent être préfixées par "get" et des méthodes qui ne doivent pas, et pourquoi s'embêter à trouver des mots de substitution pour "obtenir"?