[JAVA] Comment nommer les variables 7 sélections d'inconfort

introduction

J'ai de nombreuses occasions de lire des sources écrites par d'autres (principalement des sources provenant de fournisseurs) en raison de mon travail, mais je me sens souvent mal à l'aise avec «comment nommer les variables» qui est l'une des causes des difficultés de lecture. J'ai essayé de lister ceux qui étaient chers.

Bien sûr, je veux aussi faire attention à la source que j'ai écrite afin de ne pas me confondre plus tard.

Les modèles sont répertoriés ci-dessous.

1. Omis

× res -> 〇result △ prop -> 〇property × pat -> 〇pattern × enz -> 〇enzyme × idx-> 〇 index (Ajouté 2019/7/30) × tbl-> 〇 table (Ajouté 2019/8/24)

Je ne le savais pas autrefois, lorsque les ressources de la machine étaient limitées, et de nos jours, la lisibilité est considérablement réduite, il n'y a donc guère de mérite à l'omettre. «accessoire» n'est pas si inconfortable, mais du point de vue de la cohérence, «propriété» est moins inconfortable. Pour "enz", je pense qu'il est normal d'omettre (probablement) des mots importants que vous rencontrez rarement.

2. Fautes d'orthographe subtiles

× propaty -> 〇property × canceld -> 〇canceled × spacified -> 〇specified

Bien que "propaty" ait semblé étrange dès le début, ce n'était pas une erreur courante, donc il m'a fallu un certain temps pour remarquer qu'il était mal orthographié, et quand je l'ai remarqué, ma poitrine était rafraîchie. Je comprends que je veux faire "annulé" un ancien formulaire, mais je veux que vous l'écrivez correctement. De nombreux outils de développement récents signalent également des fautes d'orthographe, vous pouvez donc les utiliser.

3. Il n'y a pas de spécificité et il est difficile de comprendre l'objectif

× count -> 〇progressCount × max -> 〇progressCountMax etc

Je pense que la portée peut être étroite, comme dans une petite boucle ou une fonction, mais si vous l'utilisez pour une variable d'instance d'une grande classe, vous devez écrire un peu plus concrètement, lors de la lecture de la partie pertinente, "Quelle variable Ce sera ".

Cela s'applique non seulement aux types primitifs, mais également aux variables de type classe. Par exemple, comme nom de la variable de type de classe de la classe CalculationResult,

× result -> 〇calculationResult

Cela devrait être concret. Avec le premier, vous ne pouvez pas imaginer immédiatement quel sera le résultat.

4. Le sens est inversé

Il est normal de lui donner un nom de variable de type booléen appelé isValid, mais il contient maintenant "true" s'il n'est pas valide et "false" s'il est valide. On ne peut que dire que c'est hors de question. Je me sens même convaincu quand cela arrive ...

boolean isValid = false;

if(!inputFile.exists()){
    isValid = true;
}

if(isValid){
  printUsage();
}

PostScript 30/7/2019 Plus tard, j'ai eu l'occasion de regarder la source d'origine, qui s'appelait exitFlag au lieu de isValid. Cela semble être une ligne de frappe que j'ai changé le nom pour l'utiliser dans un autre but, mais je n'ai pas changé la signification de vrai / faux. Le développeur d'origine et le modificateur sont des personnes différentes. L'anti-pattern commun. Garçon, gardez votre point de vue élevé.

5. Je ne peux pas imaginer le type

Comme je lis souvent la source en imaginant comment les données seront traitées, je pense qu'il est souhaitable de connaître le but et le type d'un coup d'œil à partir du nom de la variable. Outre les types primitifs, il existe des tableaux, des listes, des cartes, etc. qui sont souvent utilisés dans le traitement des données. List est XX List (XX est le nom qui représente ce qui est stocké dans List), Map est XX △△ Map (XX est le nom qui représente la clé de Map, △△ est le nom qui représente la valeur de Map) Il semble facile de comprendre s'il est attaché.

L'exemple suivant est donné pour le type de carte.

× names -> 〇 nameValidMap

Il s'avère que ce dernier est au moins une carte qui stocke la correspondance entre le nom et quelque chose, mais le premier ne le dit pas du tout. Je l'ai mal compris comme une liste, et comme je l'ai lu? Du coup, je vais revenir à la partie définie et répéter la boucle de confirmation.

6. Je ne peux pas imaginer un ou plusieurs

Elle est similaire à la section précédente, mais en suivant le flux de traitement des données, il est important de comprendre si la variable est une donnée «unique» ou une donnée «plurielle». Par conséquent, il est beaucoup plus facile de comprendre s'il s'agit de données singulières, et s'il s'agit d'une variable qui peut stocker plusieurs données telles qu'un tableau ou une liste, elle doit être sous forme multiple.

7. J'ai volontairement changé le nom idiomatique

C'est une fonction principale familière en Java. C'est écrit comme ça.

public static void main(String[] option){
    
}

Vous sentez-vous mal à l'aise? Oui, le nom de l'argument de la fonction principale est changé en un autre nom même si le prix du marché est fixé comme "argv".

Les arguments de la fonction principale contiennent les "arguments" du programme, pas les "options" (même si elles sont stockées en conséquence).

Je me demandais bien où cette variable appelée option était définie. Si vous souhaitez changer le nom que vous utilisez de manière idiomatique, vous avez besoin d'une raison très positive.

en conclusion

Il y a beaucoup d'autres sources avec lesquelles je lutte, comme «comment insérer des lignes vides», «comment définir des variables», «comment écrire des commentaires» et «l'ordre de traitement», mais une autre opportunité. Je veux le résumer en.

Recommended Posts

Comment nommer les variables 7 sélections d'inconfort
Comment nommer des variables en Java
[Rails] Comment changer le nom de colonne de la table
Comment utiliser les variables Java
Comment utiliser setDefaultCloseOperation () de JFrame
[Traitement × Java] Comment utiliser les variables
Comment définir l'adresse IP et le nom d'hôte de CentOS8
Bases du développement Java ~ Comment écrire des programmes (variables et types) ~
Comment changer le nom de l'application dans les rails
[java] Résumé de la gestion des caractères
Résumé de l'écriture des arguments d'annotation
Comment déterminer le nombre de parallèles
[Java] [Maven3] Résumé de l'utilisation de Maven3
Comment trier une liste de SelectItems
Comment utiliser les variables d'environnement dans RubyOnRails
[Spring MVC] Comment transmettre des variables de chemin
Résumé de la sélection des éléments dans Selenium
Promesse JDBC et exemple d'écriture
Comment trouver la cause de l'erreur Ruby
graphql-ruby: Comment obtenir le nom de la requête ou de la mutation dans le contrôleur Remarque
[java] Résumé de la gestion des chaînes de caractères
Personnalisez la répartition du contenu de Recyclerview
[Bcrypt] Comment annuler la présence: true de has_secure_password
[Java] Résumé de la façon d'omettre les expressions lambda
Comment obtenir le jour d'aujourd'hui
Sortie de la façon d'utiliser la méthode slice
[Swift UI] Comment désactiver ScrollsToTop de ScrollView
Comment utiliser JQuery dans Rails 6 js.erb
Comment afficher le résultat du remplissage du formulaire
Comment définir des variables d'environnement dans le fichier de propriétés de l'application Spring Boot
Comment créer des variables membres avec le modèle JPA
Comment spécifier l'index de JavaScript pour l'instruction
Comment obtenir le nom de classe de l'argument de LoggerFactory.getLogger lors de l'utilisation de SLF4J en Java
Comment intégrer des variables JavaScript dans HTML avec Thymeleaf
[Java] Comment obtenir l'URL de la source de transition
Comment supprimer / mettre à jour le champ de liste de OneToMany
Comment appliquer HandlerInterceptor à la passerelle entrante http de Spring Integration
Comment écrire Scala du point de vue de Java
[Java] Types de commentaires et comment les rédiger
[Rails, JS] Comment implémenter l'affichage asynchrone des commentaires
[Java] Comment extraire le nom du fichier du chemin
[Ruby on Rails] Comment changer le nom de la colonne
[Java] Comment obtenir la valeur maximale de HashMap
Je souhaite afficher le nom de l'affiche du commentaire
À partir d'avril 2018 Comment installer Java 8 sur Mac
Comment définir BuildConfig du projet de bibliothèque (module) sur Debug
Comment utiliser CommandLineRunner dans Spring Batch of Spring Boot
Résumé de l'API de communication Java (1) Comment utiliser Socket
[Android] Comment obtenir la langue de réglage du terminal
Résumé de l'API de communication Java (3) Comment utiliser SocketChannel
Comment empêcher editTextPreference de Android PreferenceFragmentCompat de se rompre
Résumé de l'API de communication Java (2) Comment utiliser HttpUrlConnection
[Rails] Comment obtenir le contenu des paramètres forts