Ce que je fais souvent quand j'ai du mal à nommer avec Java (etc.)

J'ai écrit "en Java" dans le titre, mais ce n'est pas un sujet limité à un langage spécifique. Il est arrivé qu'il y ait eu beaucoup de développement Java ces jours-ci, et j'ai ajouté "in Java" à partir de l'exemple réel de l'époque. J'espère que vous pourrez l'appliquer à votre propre langage autre que Java.

Donc, si vous écrivez d'abord seulement la conclusion, ce sera comme ça.

** (* '▽') Si vous êtes intéressé, lisez la suite! ** **

■ À propos de la dénomination

La dénomination est très importante dans la programmation, en particulier dans le code lu par un nombre indéterminé de personnes, comme le développement de groupe et l'open source. Cependant, bien que très important, attribuer des ** noms propres ** aux noms de classes et de méthodes peut prendre plus de temps que vous ne le pensez.

Les anti-modèles liés à la dénomination sont également de gros thèmes, je les omettrai donc cette fois, Il peut être difficile de donner un bon nom facile à comprendre tout en évitant les mauvais noms.

Cela dit, je voudrais vous présenter ce que je pratique habituellement afin de ** donner un nom approprié aussi efficacement que possible **.

◇ Flux de réflexion au moment de la dénomination

J'écrirai à nouveau un article sur Qiita, donc écrire ce que je fais habituellement n'est pas très différent de ** Hatena Blog **. J'ai pensé, alors j'ai regardé en arrière sur le modèle de dénomination que j'utilise habituellement lors de la programmation.

  1. Utilisez le nom que vous utilisez habituellement. *
    (Réutiliser la dénomination utilisée dans le passé) *
  2. Si vous n'avez pas de nom régulier, commencez à y penser pour la première fois.
  3. Jetez un coup d'œil aux termes couramment utilisés dans la langue. *
    (estimé: niveau qui apparaît sur une page) *
  4. Emprunter des mots-clés dans d'autres langues et nommer d'autres bibliothèques. *
    (Des exemples spécifiques seront décrits plus tard) *
  5. Si vous ne pouvez rien faire, pourquoi ne pas le traduire en anglais et le nommer d'une manière agréable? *
    (Si vous voulez vraiment "penser à un nom", c'est le dernier recours. En gros, vous apportez un mot défini de quelque part.) *
  6. [Supplément]
    S'il semble que cela prendra du temps, laissez le nom temporairement et ajoutez
    FIXME et refactorisez-le plus tard pour continuer.
    • Je pense que la priorité sera légèrement différente selon l'article, mais je me demande si le formulaire de base sera comme ça. *

** (* '▽') Eh bien, je pense que c'est normal! ** **

◇ Détournement de mots-clés dans d'autres langues

Comme je l'ai écrit dans le flux de réflexion ci-dessus, "emprunter des mots clés à des fonctions équivalentes dans d'autres langues" est assez pratique. Plus précisément, voici quelques exemples de «diversification» que j'ai effectivement fait.

Exemple: détourné des mots-clés C # dans le développement Java.

Les parties communes qui effectuent le traitement multi-thread sont nommées async / await / aggregate.

Lorsque j'ai créé une partie multithread qui a enveloppé l'implémentation standard multi-thread Java (utilitaires de concurrence Java) C # (à proprement parler, c'était la série C # 3.x) a une fonction supplémentaire async / await qui vous permet d'écrire le traitement asynchrone de manière concise sous forme de syntaxe de langage. En tant que fonction considérable, la dénomination de cette zone a été améliorée.

agrégat n'a pas été ajouté en tant que mot-clé, mais il a été utilisé comme nom commun pendant longtemps.

Exemple: détourner le nom de la fonction supplémentaire après Java 6 dans le développement Java 6.

J'ai créé une classe appelée TryWithResources. (Je suppose que le contenu de la mise en œuvre)

Non, veuillez mettre à jour la version JDK docilement www Eh bien, je le pensais aussi, c'est le chat qui a dit ça un million de fois. Cependant, la réalité est que de nombreux sites de développement au Japon sont encore conservateurs. En raison de circonstances politiques, il est parfois catégoriquement refusé de mettre à niveau la version. *droite? * Ou, ** Vous pouvez le mettre à niveau, mais vous devez ensuite tester toutes les fonctionnalités du système **. * Après tout, qu'en est-il des risques de sécurité en utilisant toujours JDK6? ?? Je pense, mais ... eh bien, c'était juste la demande d'un client d'être un dieu. (Traduction gratuite: je ne sais plus) *

Il s'agit d'un nom simple donné à une classe utilitaire qui peut être utilisé comme alternative à la syntaxe try-with-resources pour garantir une libération fiable des ressources. Bien sûr, c'est un appel qui dit: "Je n'avais pas besoin de créer une telle classe si je pouvais l'élever en JDK7 !!" J'ai également écrit en javadoc: "À l'avenir, augmentez-le en JDK7 ou supérieur et effacez cette mauvaise classe." Eh bien, je suppose qu'il survit toujours sans être effacé ...

Exemple: le nom de la méthode LINQ est également facile à comprendre.

Nommez l'objet qui spécifie le prédicat de condition, Ou vous pouvez nommer une telle interface IPredicate.

Les noms de méthode LINQ (bien que la plupart soient les noms de délégués correspondants) sont également très polyvalents et il existe de nombreux bons noms faciles à emballer.

◇ Avantages de la dénomination

Emprunter la dénomination d'autres implémentations, en particulier en utilisant celles qui sont au niveau des mots clés, Au-delà de raccourcir le temps de penser à un nom, il y a les avantages suivants, et c'est mon préféré.

-Parce qu'il est déjà défini, la densité d'informations est élevée. «L'information sort dans ce mot. ――S'il existe un document officiel, vous pouvez écrire l'URL et sauter la référence.

◇ Avantages de l'utilisation de mots prédéfinis

Surtout le premier mérite est très grand.

Il est très efficace d'utiliser des ** noms définis ** comme moyen d'exprimer des connaissances et des informations systématiques d'une manière concise.

La quantité d'informations qui peuvent être véhiculées en un mot est beaucoup plus grande que les autres, et le contenu qui peut être exprimé avec moins de code est enrichi. C'est un niveau où tout est complété par le premier mot si vous n'y êtes pas doué.

En d'autres termes, c'est comme ** utiliser un modèle de conception pour la conception de classe **.

Une seule instance de cette classe est garantie d'être créée pendant un processus système et est utilisée pour mettre en cache et partager des informations communes dans tout le système.

Plutôt que de dire

Cette classe est à une tonne.

C'est plus rapide et plus précis à dire.

◇ Vous pouvez mettre un lien depuis le document de développement.

Et dans la balise see de javadoc Wikipedia --Singleton pattern Ou quelque chose comme ça.

Cela vous évitera d'avoir à écrire vous-même un long javadoc et vous permettra de capturer des informations plus générales et plus ouvertes.

◇ Les mots clés sont faciles à parcourir.

De plus, s'il s'agit d'un ** mot-clé **, il y a presque certainement une ** spécification de langage **, donc les informations (probablement le document standard) seront immédiatement consultées. Ou, même si les documents standard ne sont pas accessibles, il y a une forte possibilité que le site d'introduction (ou blog, article de Qiita, etc.) qui les explique soit frappé, et il y a un avantage que la recherche est élevée.

Dans mon cas, j'utilise souvent le mot-clé provenant de C # pour nommer, mais dans ce cas ** "Si vous recherchez sur Google avec ce mot-clé et les hits MSDN, c'est la bonne réponse, alors lisez-la attentivement !!" ** Remplissez-le avec des ** commentaires normaux **.

  • (Pour le moment, c'est un projet de développement Java, donc j'étais réticent à créer un lien ouvert vers un document dans une autre langue, donc J'utilise généralement les commentaires comme des indices pour ceux qui sont prêts à lire le code. Ou, plus directement, vous pouvez écrire directement l'URL de la page que vous souhaitez lire. ) *

■ Bonus: Cheet sheet utilisé au moment de la dénomination

Si je ne trouve pas un bon emprunteur, je ferai de mon mieux pour lui donner un joli nom. Cette zone prend du temps, je veux donc la trouver aussi facilement que possible.

En disant cela, je fais souvent référence à ce domaine.

** Dictionnaire de nommage pour les programmeurs "Codic": ** https://codic.jp/engine

** Résumé des articles de mise en conserve qui sont utiles lorsque vous n'êtes pas sûr de la dénomination des noms de variables et des noms de fonctions en programmation: ** En commençant par l'introduction de Codic ci-dessus, il y a beaucoup d'autres choses utiles pour nommer, veuillez rechercher votre favori https://nelog.jp/programming-words

** (* '▽') Merci beaucoup pour votre aide! ** **

■ Matériaux de référence

Si vous ne savez pas comment nommer un programme, vous pouvez rechercher le code sur GitHub pour référence.

Une méthode historique de recherche de code sur GitHub a été proposée. https://qiita.com/kyoshidajp/items/c5d4f060df636ea20cbb

Résumé des mots anglais souvent utilisés dans la programmation [mis à jour de temps à autre]

J'ai trouvé le plus fort de la feuille de triche de dénomination la plus forte. https://qiita.com/Ted-HM/items/7dde25dcffae4cdc7923

Viser une meilleure dénomination

C'est une convention de dénomination ou une directive. https://qiita.com/takasek/items/693c57dc9ddc6c1eb1ba

Recommended Posts