Je lis Clean Code par Oncle Bob. Parce que je ne suis pas un locuteur natif anglais, je ne pouvais pas comprendre la déclaration suivante:
Les classes et les objets doivent avoir des noms de nom ou syntagme comme
Customer
,WikiPage
,Account
etAddressParser
. Évitez les mots commeManager
,Processor
,Data
ouInfo
au nom d'une classe. Un nom de classe ne doit pas être un verbe.
Comme je sais, aucun des Manager
, Processor
, Data
et Info
est un verbe, est - ce pas? Quel est le véritable point sur lequel il souhaite insister?
coding-style
terminology
code-quality
naming
mmdemirbas
la source
la source
Réponses:
Les trois points sont distincts:
Les noms de classe doivent être des noms ou des phrases nominales . Cela signifie que le nom de la classe devrait être quelque chose qui ferait l'objet d'un verbe. Dans le cas de la conception orientée objet, les méthodes seraient les verbes qui ont lieu sur la chose dont la classe est une représentation.
Certains mots doivent être évités.
Manager
indique une classe de dieu possible .Info
etData
peut indiquer un conteneur de données factice. Des mots comme celui-ci peuvent indiquer une mauvaise modélisation de l'espace problématique.Les verbes ne doivent jamais être des noms de classe. Voir le premier point - les classes modélisent les choses, les méthodes modélisent les actions.
la source
Il essaie de faire une distinction entre les choses (noms) et les actions (verbes). Dans la conception conventionnelle orientée objet, nous considérons les classes comme des choses et leurs méthodes comme les actions que ces choses peuvent effectuer. Pour gérer est de prendre en charge ou coordonner, tout en gérant est une personne ou une chose qui gère.
Les livres d'introduction se résument généralement aux termes les plus simples et évidents possibles comme une classe nommée Dog , avec les méthodes Bark et Bite . Dans les classes du monde réel, la distinction est souvent un peu plus subtile, mais elle est toujours là. Je pense que l'argument de l'oncle Bob, cependant, est que même si manager est un nom, mais il met beaucoup d'attention sur ce que fait le manager, et non sur ce qu'il est - c'est trop vague d'un mot pour décrire exactement ce qui est être géré ou comment.
la source
Account
est un objet,balance
un champ et unetransfer
méthode. Mais la conception correcte serait:Transfer
est un objet,account
est un champ etbalance
est une méthode. C'est ainsi que les systèmes bancaires sont réellement mis en œuvre et comment les services bancaires fonctionnaient réellement avant les ordinateurs.