Pour moi, trouver un bon nom pour quelque chose revient toujours à le considérer comme un objet qui doit justifier son existence. Demande toi:
- Que fait la classe / méthode / variable, c'est-à-dire quel est son objectif plus large et à quoi sert-elle?
- De quoi précisément a-t-elle besoin pour communiquer, c'est-à-dire quelle est la part essentielle que le nom doit y avoir?
La plupart des développeurs conviendraient que la lisibilité est toujours d'une importance primordiale lorsqu'il s'agit de nommer. Ne vous contentez pas d'écrire du code afin de savoir ce que vous voulez dire pendant que vous l'écrivez, écrivez-le de sorte que quelqu'un qui regarde le code pour la première fois à un moment donné dans le futur sache ce que vous vouliez dire sans avoir à trop réfléchir. Vous n'écrirez le code qu'une seule fois, mais pendant sa durée de vie, il devra probablement être modifié plusieurs fois et lu encore plus de fois.
Le code doit être auto-documentéc'est-à-dire que votre nom doit rendre évident ce que fait quelque chose. Si vous avez besoin d'expliquer ce que fait une ligne de code dans un commentaire et que le changement de nom ne l'améliore pas suffisamment, vous devriez sérieusement envisager de refactoriser cette ligne dans une nouvelle méthode avec un nom descriptif approprié, afin que la lecture de la méthode d'origine, le un nouvel appel de méthode décrit ce qui se passe. N'ayez pas peur d'avoir des noms longs; bien sûr, vous ne devriez pas écrire de romans dans les noms de classe / méthode / variable, mais je préfère qu'un nom soit trop long et descriptif que trop court et j'ai besoin de comprendre ce qu'il fait en regardant sous le capot. À l'exception de quelques exceptions évidentes comme les coordonnées x / y et les acronymes couramment utilisés, évitez les noms et abréviations à un seul caractère. Appeler quelque chose "bkBtn" au lieu de "backButton"
Autant que votre langue le permet, faites lire votre code comme une phrase anglaise. Les objets utilisent des noms, les méthodes utilisent des verbes. Les méthodes booléennes commencent généralement par "est", mais il existe de nombreuses autres options qui transmettent le sens encore mieux, selon le cas d'utilisation, telles que "peut", "devrait" ou "fait". Bien sûr, toutes les langues ne peuvent pas être aussi bonnes que Smalltalk, mais certains symboles sont généralement compris comme faisant partie de la phrase. Deux conventions Smalltalk que j'aime personnellement utiliser dans d'autres langues autant que possible sont le préfixe du nom des paramètres de boucle avec "chacun", et le préfixe des paramètres de méthode avec l'article "a" (ou "an", ou "certains" pour les collections) . Ce n'est peut-être pas une norme courante en Java, et tout le monde est invité à ignorer ce bit, mais je trouve que cela améliore considérablement la lisibilité du code. Par exemple (exemple en Java):
public boolean shouldConsiderAbbreviating(List<String> someNames) {
for (String eachName : someNames) {
if (isTooLong(eachName)) {
return true;
}
}
return false;
}
Cela devrait être lisible pour les personnes ayant juste un peu de connaissance de Java comme quelque chose comme ceci:
Pour déterminer si vous devez envisager d'abréger une liste de certains noms (qui sont des chaînes), parcourez certains noms et pour chaque nom, déterminez si elle est trop longue; si oui, revenez true
; si aucun n'est trop long, revenez false
.
Comparez le code ci-dessus en nommant simplement l'argument strings
et la variable de boucle string
, en particulier dans une méthode plus complexe. Vous devriez regarder de près pour voir la différence au lieu que l'utilisation soit évidente d'un coup d'œil au nom.