Maison  >  Article  >  Java  >  Que sont les styles de dénomination Java, les définitions de constantes et les formats de code ?

Que sont les styles de dénomination Java, les définitions de constantes et les formats de code ?

王林
王林avant
2023-04-25 14:28:06835parcourir

Style de nommage

1 [Obligatoire] Les noms dans le code ne peuvent pas commencer par un trait de soulignement ou un signe dollar, ni peut se terminer par un trait de soulignement ou un signe dollar.

Contre exemple : _name / __name / $name / name_ / name$ / name__

2. le code est strictement interdit. La méthode de mélange du pinyin et de l'anglais n'est pas autorisée, et la méthode d'utilisation directe du chinois n'est pas autorisée.

Description :

Une orthographe et une grammaire anglaises correctes peuvent permettre aux lecteurs de comprendre facilement et d'éviter toute ambiguïté. Notez que les noms en pinyin pur doivent être évités.

Exemple positif :

renminbi / alibaba / taobao / youku / hangzhou et d'autres noms internationaux peuvent être considérés comme identiques à l'anglais. Contre-exemple : DaZhePromotion [Discount] / getPingfenByName() [Rating] / int Une certaine variable = 3

3, [

mandatory

] nom de classe Utilisez le style UpperCamelCase, avec les exceptions suivantes : DO / BO / DTO / VO / AO/ PO / UID, etc. Exemple positif : JavaServerlessPlatform / UserDO /

Mandatory

】Les noms de méthodes, les noms de paramètres, les variables membres et les variables locales utilisent tous le style lowerCamelCase et doivent suivre la casse camel.

Exemple positif : localValue / getHttpMessage() / inputUserId

5, [mandatory] Les noms de constantes sont tous en majuscules et les mots sont séparés par souligne , efforcez-vous d’exprimer la sémantique de manière complète et claire et ne pensez pas que le nom est trop long.

Exemple positif : MAX_STOCK_COUNT / CACHE_EXPIRED_TIME

Contre-exemple : MAX_COUNT / EXPIRED_TIME6, [

mandatory

] résumé class Le nom commence par Abstract ou Base ; le nom de la classe d'exception se termine par Exception ; le nom de la classe de test commence par le nom de la classe qu'elle doit tester et se termine par Test.

7. Le type [

mandatory

] est étroitement lié aux crochets pour représenter un tableau. Exemple positif : définissez un tableau d'entiers int[] arrayDemo;

Counterexample : Dans le paramètre principal, utilisez String args[] pour définir. 8. [

Mandatory

] N'ajoutez pas le préfixe is aux variables de type booléen dans la classe POJO, sinon certaines analyses du framework provoqueront des erreurs de sérialisation.

Remarque : Dans le premier accord de création de table dans la spécification MySQL de cet article, la valeur exprimant oui ou non adopte la méthode de dénomination is_xxx. Par conséquent, il est nécessaire de définir le mappage de is_xxx à xxx. dans la relation

Contre-exemple : un attribut défini comme type de données de base Boolean isDeleted, et sa méthode est également isDeleted() Lorsque le framework RPC effectue une analyse inverse, il "fait l'erreur" de supprimer le nom de l'attribut correspondant. , provoquant l'attribut S'il ne peut pas être obtenu, une exception sera levée. 9. [

MANDATORY

] Les noms de packages doivent être en minuscules et il doit y avoir un et un seul mot anglais avec une sémantique naturelle entre les séparateurs de points. Les noms de packages utilisent toujours la forme singulière, mais si le nom de classe a une signification plurielle, le nom de classe peut utiliser la forme plurielle.

Exemple positif : le nom du package de classe de l'outil d'application est com.alibaba.ai.util et le nom de la classe est MessageUtils (cette règle fait référence à la structure du framework Spring)

10, [# 🎜🎜#force] Évitez d'utiliser exactement les mêmes noms entre les variables membres des classes enfant et parent, ou entre les variables locales dans différents blocs de code, ce qui réduirait la lisibilité.

Remarque : Les noms de variables membres des sous-classes et des classes parentes sont les mêmes. Même les variables de type public peuvent être compilées avec le même nom dans différents blocs de code dans la même méthode. ils doivent éviter toute utilisation. Pour les noms de paramètres non-setter/getter, évitez d'être identiques aux noms de variables membres.

Contre-exemple :

public class ConfusingName { public int age; // Les noms de paramètres non-setter/getter ne peuvent pas avoir le même nom que les variables membres de cette classe public void getData(String alibaba ) { if(condition) { final int money = 531; // ... } for (int i = 0; i < 10; i++) { // Dans le même corps de méthode, non autorisé avec d'autres blocs de code, money a le même nom final int money = 615; // ... } } } class Son extends ConfusedName { // Le même nom que la variable membre de la classe parent n'est pas autorisé public int age; 🎜🎜#11,【

force

】Mettez fin aux abréviations totalement hors normes pour ne pas passer à côté du sens du texte.

Contre-exemple : L'"abréviation" de AbstractClass est nommée AbsClass ; l'"abréviation" de condition est nommée condi. Une telle abréviation arbitraire réduit sérieusement la lisibilité du code.

12. [

Recommandation

] Afin d'atteindre l'objectif d'auto-explication du code, lorsque vous nommez des éléments de programmation personnalisés, utilisez une combinaison de mots aussi complète que possible. possible d'exprimer sa signification. Exemple positif : Dans JDK, le nom de classe qui exprime les mises à jour atomiques est : AtomicReferenceFieldUpdater.

Contreexemple : dénomination aléatoire de int a.

13. [Recommandation] Lorsque vous nommez des constantes et des variables, mettez le nom indiquant le type à la fin du mot pour améliorer la reconnaissance.

Exemple positif : startTime / workQueue / nameList / TERMINATED_THREAD_COUNT

Counter exemple : wantedAt / QueueOfWork / listName / COUNT_TERMINATED_THREAD

14. [Recommandation] Si les modules, interfaces, classes et méthodes utilisent des modèles de conception, les modèles spécifiques doivent être reflétés dans le nom.

Description : Refléter le modèle de conception dans le nom aidera les lecteurs à comprendre rapidement le concept de conception architecturale.

Exemple positif :

public class OrderFactory; public class LoginProxy; public class ResourceObserver; #] N'ajoutez aucun modificateur aux méthodes et propriétés dans la classe d'interface (ne ajoutez public non plus), gardez le code concis et ajoutez des commentaires Javadoc valides. Essayez de ne pas définir de variables dans l'interface. Si vous devez définir des variables, elles doivent être liées aux méthodes d'interface et constituent des constantes de base pour l'ensemble de l'application.

Exemple positif : signature de la méthode d'interface void commit(); # 🎜🎜#Explication : Les interfaces du JDK8 autorisent les implémentations par défaut, cette méthode par défaut est donc une implémentation par défaut précieuse pour toutes les classes d'implémentation.

16. Il existe deux ensembles de règles pour nommer les interfaces et les classes d'implémentation :

1) [

mandatory

] Pour les classes Service et DAO, basé sur SOA Le concept est que le service exposé doit être une interface, et la classe d'implémentation interne se distingue de l'interface par le suffixe

Impl.

Exemple positif : CacheServiceImpl implémente l'interface CacheService.

2) [Recommendation

] S'il s'agit d'un nom d'interface qui décrit des capacités, prenez l'adjectif correspondant comme nom d'interface (généralement un adjectif de –able).

Exemple positif : AbstractTranslator implémente l'interface Translatable.

17, [

Reference] Le nom de la classe d'énumération a le suffixe Enum, et les noms des membres de l'énumération doivent être en lettres majuscules, et les mots sont séparés par des traits de soulignement.

Explication : Les énumérations sont en fait des classes spéciales. Les membres du domaine sont tous des constantes et le constructeur est obligé d'être privé par défaut.

Exemple positif : Le nom du membre de l'énumération nommé ProcessStatusEnum : SUCCESS / UNKNOWN_REASON.

18, [Reference

] Convention de dénomination pour chaque couche :

A) Convention de dénomination de la méthode de couche Service/DAO

#🎜 🎜 #1) La méthode pour obtenir un seul objet est préfixée par get.

2) Les méthodes pour obtenir plusieurs objets sont préfixées par list, et le pluriel se termine par : listObjects. 3) La méthode d'obtention des valeurs statistiques est préfixée par count.

4) La méthode d'insertion est préfixée par save/insert.

5) La méthode de suppression est préfixée par supprimer/supprimer.

6) La méthode de modification est préfixée par update.

B) Convention de dénomination du modèle de domaine

1) Objet de données : xxxDO, xxx est le nom de la table de données.

2) Objet de transfert de données : xxxDTO, xxx est le nom lié au domaine d'activité.

3) Objet d'affichage : xxxVO, xxx est généralement le nom de la page web.

4) POJO est le nom collectif de DO/DTO/BO/VO, et il est interdit de le nommer comme xxxPOJO.

Constant definition

1. [

Mandatory

] n'autorise aucune valeur magique (c'est-à-dire non constantes prédéfinies) apparaissent directement dans le code.

Contre-exemple : String key = "Id#taobao_" + tradeId;cache.put(key, value);// Lors de la mise en cache, get, en raison de la copie du code , Les traits de soulignement manquants peuvent entraîner une panne du cache et des problèmes

2 [Obligatoire] Lorsque vous attribuez des valeurs longues ou longues, utilisez un L majuscule après la valeur, et non un l minuscule. , les minuscules se confondent facilement avec le chiffre 1, provoquant des malentendus.

Explication : Long a = 2l ; Est-il écrit sous forme numérique 21 ou Long type 2.

3. [

Recommandation

] N'utilisez pas une seule classe de constantes pour gérer toutes les constantes. Classez-les selon leurs fonctions et gérez-les séparément. Description : La classe de constantes vaste et complète est désordonnée et désorganisée. Seule la fonction de recherche peut être utilisée pour localiser les constantes modifiées, ce qui n'est pas propice à la compréhension et à la maintenance.

Exemple positif : les constantes liées au cache sont placées sous la classe CacheConsts ; les constantes liées à la configuration du système sont placées sous la classe ConfigConsts.

4. [Recommended] Il existe cinq niveaux de réutilisation constante : constantes partagées entre applications, constantes partagées intra-application, constantes partagées intra-sous-projet, #🎜🎜 #

Constantes partagées au sein des packages et constantes partagées au sein des classes.

1) Constantes partagées entre applications : placées dans une bibliothèque tierce, généralement dans le répertoire des constantes de client.jar.

2) Constantes partagées dans l'application : placées dans une bibliothèque, généralement dans le répertoire des constantes d'un sous-module.

Contre-exemple : Les variables faciles à comprendre doivent également être définies uniformément comme constantes partagées au sein de l'application. Deux ingénieurs ont défini des variables "OUI" en deux classes :

Classe A. Moyen : chaîne finale statique publique OUI = "yes";

Class B Moyen : chaîne finale statique publique OUI = "y";

A.YES.equals(B. OUI), censé être vrai, mais a en réalité renvoyé faux, provoquant des problèmes en ligne.

3) Constantes partagées au sein des sous-projets : c'est-à-dire dans le répertoire des constantes du sous-projet actuel.

4) Constantes partagées au sein du package : c'est-à-dire dans un répertoire de constantes séparé sous le package actuel.

5) Constantes partagées au sein de la classe : définies directement à l'intérieur de la classe private static final.

5【

Recommended

】Si la valeur de la variable ne change que dans une plage fixe, utilisez le type enum pour la définir.

Remarque : S'il existe un attribut étendu autre que le nom, le type enum doit être utilisé. Le numéro dans l'exemple positif ci-dessous est l'information étendue, indiquant le

. saison dans l'année.

Exemple positif :

public enum SeasonEnum { PRINTEMPS(1), ÉTÉ(2), AUTOMNE(3), HIVER(4); private int seq;int seq) {this.seq = seq;} public int getSeq() {return seq ;} }

Format du code

1. [Obligatoire] Si les accolades sont vides, écrivez simplement {} sans sauts de ligne ni espaces entre les accolades ; s'il s'agit d'un bloc de code non vide :

1) Il n’y a pas de saut de ligne avant l’accolade ouvrante.

2) Saut de ligne après l'accolade gauche.

3) Saut de ligne avant l'accolade droite.

4) S'il y a un autre code après l'accolade droite, il n'y aura pas de saut de ligne ; le saut de ligne doit être après l'accolade droite indiquant la fin.

2. Il n'y a pas d'espace entre la parenthèse gauche et le caractère ; de même, il n'y a pas d'espace entre la parenthèse droite et le caractère et un espace est requis avant l'accolade gauche ; Pour plus de détails, consultez les exemples de conseils corrects sous l'article 5.

Contre-exemple : if (espace a == b espace)

3 [Obligatoire] Les mots réservés tels que if/for/while/switch/do et les parenthèses doivent avoir des espaces entre eux.

4. [Obligatoire] Tout opérateur binaire ou ternaire nécessite un espace sur les côtés gauche et droit.

Explication : Les opérateurs incluent l'opérateur d'affectation =, l'opérateur logique &&, les signes d'addition, de soustraction, de multiplication et de division, etc.

5. [Obligatoire] Utiliser 4 espaces pour les caractères d'indentation et de tabulation sont interdits.

Remarque : Si vous utilisez l'indentation de tabulation, vous devez définir 1 tabulation sur 4 espaces. Lorsque IDEA définit les tabulations sur 4 espaces, ne cochez pas Utiliser le caractère de tabulation dans Eclipse, vous devez cocher Insérer des espaces pour les tabulations.

Exemple positif : (impliquant les points 1 à 5)

public static void main(String[] args) {//Indent 4 espaces String say = "hello";//Il doit y avoir un espace int à gauche et à droite de l'opérateur flag = 0;//Il doit y avoir un espace entre le mot-clé if et les parenthèses. Il n'est pas nécessaire d'avoir un espace entre f et le crochet gauche, 0 et le crochet droit entre parenthèses if (flag == 0). ) {System.out.println(say); }// Ajouter un espace avant l'accolade gauche et aucun saut de ligne après l'accolade gauche if (flag == 1) { System.out.println("world") ;// Saut de ligne avant l'accolade droite, et il y a un saut de ligne après l'accolade droite sinon, pas de saut de ligne} else {System.out.println("ok");//S'il se termine directement après l'accolade droite, un saut de ligne est requis}}

6 [Obligatoire] Doubles barres obliques et contenu des commentaires Il doit y avoir exactement un espace entre eux.

Exemple positif :

// Ceci est un exemple de commentaire, veuillez noter qu'il y a un espace après la double barre oblique String param = new String();

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer