Heim >Java >javaLernprogramm >Was sind Java-Namensstile, Konstantendefinitionen und Codeformate?
Namensstil
1. [Obligatorisch] Die Namen im Code dürfen nicht mit einem Unterstrich oder Dollarzeichen beginnen und auch nicht mit einem Unterstrich oder Dollarzeichen enden.
Gegenbeispiel: _name / __name / $name / name_ / name$ / name__
2 [Obligatorisch] Es ist strengstens verboten, eine Mischung aus Pinyin und Englisch für die Benennung im Code zu verwenden, und es ist auch nicht erlaubt Chinesisch direkt verwenden.
Anleitung: Eine korrekte englische Rechtschreibung und Grammatik kann es den Lesern erleichtern, Unklarheiten zu verstehen und zu vermeiden. Beachten Sie, dass reine Pinyin-Namen vermieden werden sollten.
Richtige Beispiele: renminbi / alibaba / taobao / youku / hangzhou und andere international gebräuchliche Namen können als mit Englisch identisch angesehen werden.
Gegenbeispiel: DaZhePromotion [Discount] / getPingfenByName() [Rating] / int Eine bestimmte Variable = 3
3, [Mandatory] Der Klassenname verwendet den UpperCamelCase-Stil, es werden jedoch die folgenden Ausnahmen gemacht: DO / BO / DTO/VO/AO/PO/UID usw.
Positives Beispiel: JavaServerlessPlatform / UserDO / LowerCamelCase-Stil, muss der Kamel-Schreibweise folgen.
Positives Beispiel: localValue / getHttpMessage() / inputUserId
5. [Obligatorisch] Konstantennamen sollten ausschließlich in Großbuchstaben geschrieben werden und Wörter sollten durch Unterstriche getrennt werden finde den Namen zu lang.
Positives Beispiel: MAX_STOCK_COUNT / CACHE_EXPIRED_TIME
Gegenbeispiel: MAX_COUNT / EXPIRED_TIME6. Der Name der abstrakten Klasse beginnt mit „Abstract“ oder „Base“. die Klasse, die getestet werden soll. Beginnen Sie mit dem Namen und enden Sie mit Test.
7. Der Typ [
mandatory] ist eng mit eckigen Klammern verbunden, um ein Array darzustellen.
Positives Beispiel: Definieren Sie ein ganzzahliges Array int[] arrayDemo; Zählerbeispiel: Verwenden Sie im Hauptparameter String args[] zum Definieren.
8. [Obligatorisch] Fügen Sie dieses Präfix nicht zu Variablen vom Typ Boolean in POJO-Klassen hinzu, da sonst einige Framework-Analysen zu Serialisierungsfehlern führen.
Hinweis: In der ersten Tabellenerstellungsvereinbarung in der MySQL-Spezifikation dieses Artikels verwendet der Wert, der Ja oder Nein ausdrückt, die Benennungsmethode is_xxx, daher muss die Zuordnungsbeziehung von is_xxx zu xxx in
Zählerbeispiel: Das als Basisdatentyp Boolean definierte Attribut istDeleted, und seine Methode ist auch isDeleted(). Wenn das RPC-Framework eine umgekehrte Analyse durchführt, „verwechselt“ es, dass der entsprechende Attributname gelöscht wird, was dazu führt, dass das Attribut nicht gelöscht wird abgerufen und dann eine Ausnahme ausgelöst wurde.
9. [Obligatorisch] Paketnamen müssen Kleinbuchstaben enthalten und zwischen Punkttrennzeichen darf nur ein englisches Wort mit natürlicher Semantik stehen. Paketnamen verwenden immer die Singularform, aber wenn der Klassenname eine Pluralbedeutung hat, kann der Klassenname die Pluralform verwenden.
Positives Beispiel: Der Paketname des Anwendungstools lautet com.alibaba.ai.util und der Klassenname lautet MessageUtils (diese Regel bezieht sich auf die Spring-Framework-Struktur)
10 [
Obligatorisch] Vermeiden Sie die Platzierung von Mitgliedsvariablen dazwischen Unter- und übergeordnete Klassen Die Verwendung exakt gleicher Namen zwischen lokalen Variablen oder zwischen lokalen Variablen in verschiedenen Codeblöcken verringert die Lesbarkeit. Hinweis: Die Namen der Mitgliedsvariablen von Unterklassen und übergeordneten Klassen sind gleich. Auch lokale Variablen mit demselben Namen in verschiedenen Codeblöcken innerhalb derselben Methode sind zulässig, sollten jedoch vermieden werden. Vermeiden Sie, dass Parameternamen, die keine Setter/Getter sind, mit Namen von Mitgliedsvariablen identisch sind.
Gegenbeispiel:
public class ConfusingName { public int age; // Nicht-Setter-/Getter-Parameternamen dürfen nicht denselben Namen wie Mitgliedsvariablen dieser Klasse haben public void getData(String alibaba) { if(condition) { final int money = 531 ; // ... } for (int i = 0; i < 10; i++) { // Im gleichen Methodenkörper ist der gleiche Name wie „money“ in anderen Codeblöcken nicht erlaubt final int Geld = 615; // ... Gegenbeispiel: Die „Abkürzung“ von AbstractClass heißt AbsClass; die „Abkürzung“ von Condition heißt condi. Eine solche willkürliche Abkürzung verringert die Lesbarkeit des Codes erheblich.
12. [
Empfohlen] Um das Ziel der Selbsterklärung des Codes zu erreichen, verwenden Sie bei der Benennung benutzerdefinierter Programmierelemente eine möglichst vollständige Wortkombination, um deren Bedeutung auszudrücken.
Positives Beispiel: Im JDK lautet der Klassenname, der atomare Aktualisierungen ausdrückt: AtomicReferenceFieldUpdater.
Gegenbeispiel: willkürliche Benennung von int a. 13. [
Empfohlen] Setzen Sie beim Benennen von Konstanten und Variablen das Substantiv, das den Typ angibt, an das Ende des Wortes, um die Erkennung zu verbessern.
Positives Beispiel: startTime/workQueue/nameList/TERMINATED_THREAD_COUNTGegenbeispiel: gestartetAt/QueueOfWork/listName/COUNT_TERMINATED_THREAD
14. [Empfohlen] Wenn Module, Schnittstellen, Klassen und Methoden Entwurfsmuster verwenden, müssen sich die spezifischen Muster in der Benennung widerspiegeln.
Hinweis: Die Widerspiegelung des Designmusters im Namen hilft den Lesern, das architektonische Designkonzept schnell zu verstehen.
Positives Beispiel:
öffentliche Klasse LoginProxy; öffentliche Klasse ResourceObserver
15. Fügen Sie keine Modifikatoren zu den Methoden und Attributen in der Schnittstellenklasse hinzu. und halten Sie den Code sauber. Einfachheit, gepaart mit effektiven Javadoc-Kommentaren. Versuchen Sie, keine Variablen in der Schnittstelle zu definieren. Wenn Sie Variablen definieren müssen, müssen diese mit Schnittstellenmethoden in Zusammenhang stehen und grundlegende Konstanten für die gesamte Anwendung sein. Positives Beispiel: Schnittstellenmethodensignatur void commit(); interface basic constant String COMPANY = "alibaba";
Erläuterung: Schnittstellen in JDK8 erlauben Standardimplementierungen Diese Standardmethode ist eine Standardimplementierung, die für alle Implementierungsklassen wertvoll ist.
16. Es gibt zwei Regelsätze für die Benennung von Schnittstellen und Implementierungsklassen:
1) [
Obligatorisch] Für Service- und DAO-Klassen müssen die bereitgestellten Dienste basierend auf dem Konzept von SOA Schnittstellen und die interne Implementierung sein Klassen verwenden
Der Unterschied zwischen dem Suffix und der Schnittstelle von Impl. Positives Beispiel: CacheServiceImpl implementiert die CacheService-Schnittstelle.
2) [
Empfohlen] Wenn es sich um einen Schnittstellennamen handelt, der Funktionen beschreibt, verwenden Sie das entsprechende Adjektiv als Schnittstellennamen (normalerweise ein Adjektiv von –able).
Positives Beispiel: AbstractTranslator implementiert die Translatable-Schnittstelle. 17. [
Referenz] Der Name der Aufzählungsklasse muss mit dem Suffix „Enum“ versehen werden. Die Namen der Aufzählungsmitglieder müssen ausschließlich in Großbuchstaben geschrieben und durch Unterstriche getrennt sein.
Erläuterung: Aufzählungen sind eigentlich spezielle Klassen. Domänenmitglieder sind alle Konstanten und der Konstruktor ist standardmäßig gezwungen, privat zu sein. Positives Beispiel: Der Mitgliedsname der Enumeration mit dem Namen ProcessStatusEnum: SUCCESS / UNKNOWN_REASON.
18. [
Referenz] Namenskonvention für jede Schicht:
A) Namenskonvention für Service-/DAO-Schichtmethoden1) Methoden zum Abrufen eines einzelnen Objekts werden mit dem Präfix „get“ versehen.
2) Methoden zum Abrufen mehrerer Objekte erhalten das Präfix list und die Pluralform endet auf: listObjects.
3) Der Methode zum Erhalten statistischer Werte wird count vorangestellt.
4) Der Einfügemethode wird „Speichern/Einfügen“ vorangestellt.
5) Der Löschmethode wird „remove/delete“ vorangestellt.
6) Der Änderungsmethode wird „Update“ vorangestellt.
B) Namenskonvention für Domänenmodelle
1) Datenobjekt: xxxDO, xxx ist der Name der Datentabelle.
2) Datenübertragungsobjekt: xxxDTO, xxx ist der Name, der sich auf das Geschäftsfeld bezieht.
3) Anzeigeobjekt: xxxVO, xxx ist normalerweise der Name der Webseite.
4) POJO ist der Sammelname von DO/DTO/BO/VO und es ist verboten, es als xxxPOJO zu bezeichnen.
Konstantendefinition1. [Obligatorisch] erlaubt nicht, dass magische Werte (d. h. Konstanten, die nicht vordefiniert sind) direkt im Code erscheinen.
Gegenbeispiel: String key = „Id#taobao_“ + tradeId;cache.put(key, value);// Beim Caching von get fehlt die Unterstreichung beim Kopieren des Codes, was zu Cache-Ausfällen und Problemen führt
2 . [
Obligatorisch] Wenn Sie long oder Long einen Wert zuweisen, verwenden Sie nach dem Wert ein großes L, kein kleines l. Kleinbuchstaben können leicht mit der Zahl 1 verwechselt werden, was zu Missverständnissen führt.
Erklärung: Long a = 2l; Schreibt es 21 als Zahl oder 2 als Long? 3. [
Empfohlen] Verwenden Sie nicht eine Konstantenklasse, um alle Konstanten nach ihren Funktionen zu klassifizieren und separat zu verwalten.
Hinweis: Die große und umfassende Konstantenklasse ist unorganisiert. Zum Auffinden der geänderten Konstanten kann nur die Suchfunktion verwendet werden, was dem Verständnis und der Wartung nicht förderlich ist. Positives Beispiel: Cache-bezogene Konstanten werden unter der Klasse CacheConsts platziert; systembezogene Konstanten werden unter der Klasse ConfigConsts platziert.
4. [
Empfohlen] Es gibt fünf Ebenen der Wiederverwendung von Konstanten: gemeinsam genutzte Konstanten in Anwendungen, gemeinsam genutzte Konstanten innerhalb von Anwendungen, gemeinsam genutzte Konstanten innerhalb von Unterprojekten, gemeinsam genutzte Konstanten innerhalb von
Paketen und gemeinsam genutzte Konstanten innerhalb von Klassen. 1) Konstanten anwendungsübergreifend teilen: in einer Bibliothek eines Drittanbieters platziert, normalerweise im Konstantenverzeichnis in client.jar.
2) In der Anwendung gemeinsam genutzte Konstanten: in einer Bibliothek platziert, normalerweise im Konstantenverzeichnis in einem Submodul.
Gegenbeispiel: Leicht verständliche Variablen sollten auch innerhalb der Anwendung einheitlich als gemeinsame Konstanten definiert werden. Zwei Ingenieure haben „YES“-Variablen in zwei Klassen definiert:
In Klasse A: öffentlicher statischer finaler String YES = „yes“;
In Klasse B: öffentlicher statischer finaler String YES = "y";
A.YES.equals(B.YES), der voraussichtlich wahr ist, aber tatsächlich falsch zurückgibt, was zu Online-Problemen führt.
3) Gemeinsame Konstanten innerhalb von Teilprojekten: also im Konstantenverzeichnis des aktuellen Teilprojekts.
4) Gemeinsame Konstanten innerhalb des Pakets: das heißt in einem separaten Konstantenverzeichnis unter dem aktuellen Paket.
5) Gemeinsame Konstanten innerhalb der Klasse: direkt innerhalb des privaten statischen Finales der Klasse definiert.
5【
Empfohlen】Wenn sich der Variablenwert nur innerhalb eines festen Bereichs ändert, verwenden Sie den Aufzählungstyp, um ihn zu definieren.
Hinweis: Wenn es ein anderes erweitertes Attribut als den Namen gibt, sollte der Enum-Typ verwendet werden. Die Zahl im folgenden Beispiel ist die erweiterte Information, die die te Jahreszeit angibt.
Positives Beispiel:
public enum SeasonEnum { SPRING(1), SUMMER(2), AUTUMN(3), WINTER(4); private int seq; SeasonEnum(int seq) {this.seq = seq;} public int getSeq() {return seq ;} }
Codeformat
1. Wenn die geschweiften Klammern leer sind, schreiben Sie einfach {} ohne Zeilenumbrüche und Leerzeichen zwischen den geschweiften Klammern; wenn es sich um einen nicht leeren Codeblock handelt: 1) Vor der öffnenden Klammer steht kein Zeilenumbruch.
2) Zeilenumbruch nach der linken geschweiften Klammer.
3) Zeilenumbruch vor der rechten Klammer.
4) Wenn nach der rechten Klammer ein else-Code steht, erfolgt kein Zeilenumbruch; auf die rechte Klammer, die die Beendigung anzeigt, muss ein Zeilenumbruch folgen.
2. Zwischen der linken Klammer und dem Zeichen steht kein Leerzeichen, und vor der linken Klammer ist kein Leerzeichen erforderlich. Einzelheiten finden Sie in den richtigen Beispieltipps unter Artikel 5.
Gegenbeispiel: if (space a == b space)
3 [
Obligatorisch] Reservierte Wörter wie if/for/while/switch/do und Klammern müssen Leerzeichen dazwischen haben. 4. [
Obligatorisch] Jeder binäre oder ternäre Operator muss auf der linken und rechten Seite ein Leerzeichen hinzufügen. Erklärung: Zu den Operatoren gehören der Zuweisungsoperator =, der logische Operator &&, Additions-, Subtraktions-, Multiplikations- und Divisionszeichen usw.
5. [
Obligatorisch] Die Verwendung von 4 Leerzeichen zum Einrücken und Tabulatorzeichen ist verboten. Hinweis: Wenn Sie die Tabulatoreinrückung verwenden, müssen Sie 1 Tabulator auf 4 Leerzeichen setzen. Wenn IDEA Tabulatoren auf 4 Leerzeichen festlegt, aktivieren Sie nicht die Option „Tabulatorzeichen verwenden“. In Eclipse müssen Sie „Leerzeichen für Tabulatoren einfügen“ aktivieren.
Positives Beispiel: (einschließlich der Punkte 1-5)
public static void main(String[] args) {//4 Leerzeichen einrücken String say = "hello";//Links und rechts muss ein Leerzeichen int vorhanden sein des Operators flag = 0;//Zwischen dem Schlüsselwort if und den Klammern muss ein Leerzeichen stehen. Es ist kein Leerzeichen zwischen f und der linken Klammer, 0 und der rechten Klammer innerhalb der Klammern erforderlich if (flag == 0 ) {System.out.println(say }// Fügen Sie ein Leerzeichen vor der linken Klammer und keinen Zeilenumbruch nach der linken Klammer hinzu if (flag == 1) { System.out.println("world") ;// Setzen Sie einen Zeilenumbruch vor die rechte Klammer, und nach der rechten Klammer gibt es einen Zeilenumbruch, sonst keinen Zeilenumbruch} else {System.out.println("ok");//Wenn es direkt nach der rechten Klammer endet geschweifte Klammer, ein Zeilenumbruch ist erforderlich}}
6. Doppelte Schrägstriche und Kommentarinhalt von Kommentaren Zwischen ihnen muss genau ein Leerzeichen stehen.
Positives Beispiel: // Dies ist ein Beispielkommentar. Bitte beachten Sie, dass nach dem doppelten Schrägstrich ein Leerzeichen steht. String param = new String();
Das obige ist der detaillierte Inhalt vonWas sind Java-Namensstile, Konstantendefinitionen und Codeformate?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!