[JAVA] Écrivons un code facile à maintenir (Partie 2) Nom

1. De quoi parler cette fois

2. Chatter

Nous avons reçu beaucoup d'avis de l'article La dernière fois, "Écrivons du code facile à maintenir (Partie 1)". Je vous remercie! C'est une petite histoire personnelle, mais je suis un jeune ingénieur de 30 ans, 6 ans après avoir rejoint l'entreprise actuelle. Depuis que je me suis spécialisé en chimie à l'université et à l'école supérieure, mon historique de programmation est presque le même que mon historique d'embauche. Je vais vous expliquer la bonne réponse maintenant, mais je ne peux toujours pas effacer la sensation d'une grenouille dans le puits. Ce sera très utile si vous pouvez commenter les erreurs dans le contenu, les meilleures méthodes et les différentes perspectives. Je vous en prie.

3. Collection de techniques

3.1. N'utilisez pas l'anglais au-dessus du premier cycle du secondaire pour les noms de méthodes et de variables

Étant donné que les caractères utilisés dans la programmation sont essentiellement des alphabets, il est plus confortable d'utiliser des mots anglais. Cependant, si vous pensez que vous n'utilisez pas de mots anglais, le code peut être difficile à maintenir.

Par exemple, si vous deviez nommer une variable ayant la signification suivante, comment la nommeriez-vous?


Considérez une classe qui représente un rapport d'activité.


Bien sûr, il n'y a pas 100 réponses correctes. Au fait, si vous le traduisez simplement en anglais avec Google Traduction ...

est devenu.

・ ・ ・

Je pense que ça ressemblerait à ça.

Le mot anglais Implementation ne sera pas utilisé au collège. (Cette fois, j'ai regardé les mots anglais sur ce site.) Si vous ne pouvez pas lire ceci comme "implémenté" en un coup d'œil , Doit également être membre du projet. Si vous le limitez trop, il sera difficile de créer des «gens qui comprennent», mais je pense qu'il peut être difficile de dire que les gens qui ne le comprennent pas sont plus susceptibles d'étudier les mots anglais. Le compromis porte sur "l'anglais du premier cycle du secondaire". Bien sûr, même si c'est un mot difficile, s'il est souvent utilisé dans l'industrie, je pense que vous devriez l'utiliser.

À propos, il n'est pas recommandé de saisir facilement des numéros de série dans le nom (date_01, etc.). Si vous devez décider d'un grand nombre de noms de variables, et s'ils sont étroitement liés pour que vous ne vous sentiez pas mal à l'aise même si vous attribuez des numéros de série, c'est acceptable, mais sinon, quand vous l'examinerez plus tard, "Cette variable Qu'est-ce que cela signifie? »C'est difficile à rattraper. (Si vous regardez les commentaires, vous pouvez comprendre dans une certaine mesure, mais inversement, vous ne pouvez pas comprendre à moins que vous ne preniez la peine de regarder les commentaires.)

3.2. Pour les noms avec deux mots ou plus, soyez conscient de l'ordre

Dans la section 3.1, le nom de variable auquel je pense était "date_XXX". Dans cette section, je vais parler de l'opportunité d'amener "date" devant ou derrière. Cette réponse, bien sûr, dépend de l'occasion. Donc, je voudrais aborder la façon de penser que j'ai comme ligne directrice.

Tout d'abord, le plus important pour moi est "Quelle unité est facile à voir / à comprendre lorsqu'on imagine des améliorations possibles dans le futur?" Prenons l'exemple de la section 3.1.

Dans cet exemple, imaginez une amélioration future qui pense comme "Je veux trier par date. La date est une date, mais quel type de date cet objet avait-il? Pourquoi est-il facile à trier?" Fait. Au contraire, "J'ai déjà une date de création de rapport, mais j'aimerais aussi ajouter l'auteur. Oh, je veux un exécuteur d'entreprise, et je veux un décideur! Vous pouvez imaginer l'amélioration. Dans ce cas, il peut être plus facile à utiliser s'il est organisé par les axes de create_XXX et jisseki_XXX.

Il n'y a pas de réponse claire à cela, mais il est mauvais de ne pas y penser du tout, alors prenez-le comme un rappel. Je pense que c'est une perte de temps de passer deux ou trois heures à décider de ce nom.

3.3. Nommons-le en fonction du contenu

Quel type de méthode imaginez-vous lorsque vous voyez les noms de méthodes ci-dessous? En passant, pensez que int categoryId qui est apparu pour la première fois est la valeur clé de la catégorie pour classer un grand nombre d'éléments. Et imaginez une partie du traitement logique de l'écran qu'il existe un menu déroulant appelé «Catégorie» sur l'écran Web où la liste des éléments est affichée, et si vous la modifiez, elle sera réduite à la liste des éléments de cette catégorie et réaffiche.

 public static List<String> getListItemTitle(int categoryId) {
  //Traitement du contenu

  }

"Je me demande si je vais accéder à la base de données et obtenir une liste d'éléments en utilisant le categoryId comme clé" ou "Je me demande si seuls les éléments du categoryId correspondant seront extraits de la ItemList qui a déjà été acquise en tant qu'objet". Je pense que vous pouvez imaginer ce genre de chose.

Mais en fait, dans cette méthode, en plus de SELECT pour une telle acquisition de liste, que se passe-t-il si vous entendez "J'exécute un INSERT sur la table d'historique de recherche que cet utilisateur a recherché pour cet ID de catégorie." N'est-ce pas "Eh? Mettez-vous à jour la base de données?!"

Certes, lorsque vous affinez par catégorie et appliquez SELECT, je pense qu'il est nécessaire que vous souhaitiez toujours enregistrer l'historique et l'exécuter en tant que paire. Mais si c'est le cas, quelque part dans le nom de la méthode, vous devriez être en mesure de dire que vous faites également INSERT. Si vous ne comprenez pas ce que fait la méthode en regardant simplement le nom, il peut être réutilisé involontairement dans les améliorations futures et un enregistrement DB étrange peut être créé.

Je pense que "alors le nom de la méthode sera plus long, non?", Mais plutôt que le nom "Je n'ai pas d'informations importantes car je veux les raccourcir", le nom "Il contient suffisamment d'informations mais est long" Cependant, il est très facile à entretenir. Cependant, je ne veux pas autoriser 100 caractères et 200 caractères, la modération est donc importante.


Je continuerai à parler de noms la prochaine fois.

Recommended Posts

Écrivons un code facile à maintenir (Partie 2) Nom
Écrire du code facile à maintenir (partie 1)
Écrire du code facile à maintenir (partie 4)
Écrire du code facile à maintenir (partie 3)
Écrire du code difficile à tester
Comment identifier le chemin sur lequel il est facile de se tromper
Comment écrire du code qui pense Ruby orienté objet
Facile à entretenir FizzBuzz
Easy Null Check-Je veux vous donner une chance d'écrire du bon code. 6 [Exemple de refactoring C #]
Nouvelles fonctionnalités de Java 14 pouvant être utilisées pour écrire du code
[Java] Code difficile à remarquer mais terriblement lent
Écrivons un code de test pour la fonction de connexion avec Spring Boot
Faisons un custom_cop qui souligne le tremblement du nom
La fonction est très facile à utiliser
AtCoder s'appelle TLE et explique comment écrire du beau code
Ecrire une troisième instruction If qui n'est ni une instruction if ni un opérateur ternaire
Notez que VS Code + JUnit 5 peut être utilisé sous Windows 10
Création d'une bibliothèque qui facilite la gestion des préférences partagées Android
[Petite histoire] Nom de la méthode trompeur (une histoire qui a perdu du temps à cause de setScale.