ホームページ  >  記事  >  Java  >  Java の命名スタイル、定数定義、コード形式とは何ですか?

Java の命名スタイル、定数定義、コード形式とは何ですか?

王林
王林転載
2023-04-25 14:28:06782ブラウズ

命名スタイル

1. [必須] コード内の名前は、アンダースコアやドル記号で始めたり、アンダースコアやドル記号で終わったりすることはできません。ドル記号。

反例: _name / __name / $name / name_ / name$ / name__

2. [必須] ピンインと英語を混合して使用することは固く禁じられています。コード内の名前付けに使用されており、中国語を直接使用することは許可されていません。

注: 英語のスペルと文法を正しくすると、読者が理解しやすくなり、曖昧さを避けることができます。純粋なピンインによる名前付けは避けるべきであることに注意してください。

良い例: Renminbi / alibaba / taobao / youku / Hangzhou およびその他の国際的に一般的な名前は、英語と同じと見なすことができます。

反例: DaZhePromotion [割引] / getPingfenByName() [評価] / int 特定の変数 = 3

3, [Mandatory] クラス名は UpperCamelCase スタイルを使用します。ただし、次の例外があります: DO/BO/DTO/VO/AO/PO/UID など。

良い例: JavaServerlessPlatform / UserDO / #]メソッド名、パラメーター名、メンバー変数、およびローカル変数はすべて lowerCamelCase スタイルを使用し、キャメルケースに従う必要があります。

良い例: localValue / getHttpMessage() / inputUserId

5. [MANDATORY] 定数名はすべて大文字で、完全を保証するために単語はアンダースコアで区切られています。明確な意味表現。名前が長すぎるとは思わないでください。

正の例: MAX_STOCK_COUNT / CACHE_EXPIRED_TIME

反例: MAX_COUNT / EXPIRED_TIME6, [

Mandatory

] 抽象クラス名は Abstract または Base で始まります; 例外 クラス名は Exception で終わり、テスト クラス名はテスト対象のクラスの名前で始まり Test で終わります。

7. [

mandatory

] 型は、配列を表すために角括弧と密接に関係しています。 肯定的な例: 整数配列 int[] arrayDemo を定義します;

反例: メイン パラメーターで、String args[] を使用して定義します。 8. [

必須

] POJO クラスのブール型変数に is プレフィックスを追加しないでください。追加しないと、一部のフレームワーク解析でシリアル化エラーが発生します。

注: この記事の MySQL 仕様の最初のテーブル作成規約では、yes または no を表す値が is_xxx という命名方法を採用しているため、is_xxx から xxx へのマッピング関係を設定する必要があります。 <結果マップ>。

反例: 基本データ型 Boolean isDeleted として定義された属性、およびそのメソッドも isDeleted() です。RPC フレームワークが逆解析を実行すると、対応する属性名が削除されたと「誤認」され、その結果、属性の取得に失敗し、例外がスローされます。 9. [

必須

] パッケージ名は小文字にする必要があり、ドット区切り文字の間に自然な意味を持つ英単語が 1 つだけ存在する必要があります。パッケージ名は常に単数形を使用しますが、クラス名に複数の意味がある場合は、クラス名に複数形を使用できます。

良い例: アプリケーション ツール クラスのパッケージ名は com.alibaba.ai.util、クラス名は MessageUtils (このルールは Spring フレームワーク構造を参照します)

10, [Mandatory] 可読性が低下するため、子クラスと親クラスのメンバー変数間、または異なるコード ブロック内のローカル変数間でまったく同じ名前を使用することは避けてください。

注: サブクラスと親クラスのメンバー変数名は同じです。パブリック型変数でもコンパイルできます。同じメソッド内の異なるコード ブロックで同じ名前のローカル変数も使用できますが、使用は避けてください。 . .セッター/ゲッター以外のパラメーター名については、メンバー変数名と同じにしないでください。

カウンターの例: public class ConfusingName { public int age; // セッター/ゲッター以外のパラメーター名は、このクラスのメンバー変数と同じ名前を持つことはできません public void getData( String alibaba) { if(condition) {final intmoney = 531; // ... } for (int i = 0; i

11、[

必須

]本文の意味の誤解を避けるため、完全に不規則な略語をやめてください。

反例: AbstractClass の "省略形" は AbsClass という名前が付けられ、条件の "省略形" は condi という名前が付けられます。このような任意の省略形は、コードの可読性を著しく低下させます。

12. [推奨事項 ] コードを一目で理解できるという目的を達成するために、カスタム プログラミング要素に名前を付けるときは、その要素を表現するためにできるだけ完全な単語の組み合わせを使用してください。意味。

良い例: JDK では、アトミックな更新を表すクラス名は AtomicReferenceFieldUpdater です。

反例: int a のランダムな名前。 13. [

推奨

] 定数や変数に名前を付けるときは、認識しやすくするために、語尾に型を示す名詞を付けます。

正の例: startTime / workQueue / nameList / TERMINATED_THREAD_COUNT

反例:startAt / QueueOfWork / listName / COUNT_TERMINATED_THREAD

14. [推奨事項 ] モジュール、インターフェイス、クラス、およびメソッドがデザイン パターンを使用する場合、特定のパターンを名前付けに反映する必要があります。

注: 名前に設計パターンを反映させると、読者がアーキテクチャ設計の概念をすぐに理解できるようになります。

良い例:

public class OrderFactory; public class LoginProxy; public class ResourceObserver;

15. [Recommendation] メソッドと何も追加しないでください。プロパティ (またはパブリック) に修飾子を追加し、コードを簡潔に保ち、有効な Javadoc コメントを追加します。インターフェイスでは変数を定義しないようにしてください。変数を定義する必要がある場合、変数はインターフェイス メソッドに関連しており、アプリケーション全体の基本定数である必要があります。

肯定的な例: インターフェイス メソッド シグネチャ void commit(); インターフェイス基本定数 String COMPANY = "alibaba";

カウンターの例: インターフェイス メソッド定義 public abstract void f();

注意: JDK8 のインターフェイスではデフォルト実装が許可されているため、このデフォルト メソッドはすべての実装クラスにとって貴重なデフォルト実装です。

16. インターフェイスと実装クラスの命名には 2 つのルール セットがあります:

1) [必須] SOA の概念に基づく、サービス クラスと DAO クラスの場合、公開 サービスはインターフェイスである必要があり、内部実装クラスはサフィックス

Impl を使用してインターフェイスと区別されます。

良い例: CacheServiceImpl は CacheService インターフェイスを実装します。

2) [推奨事項 ] 機能を説明するインターフェイス名の場合は、対応する形容詞をインターフェイス名として使用します (通常は –able という形容詞)。

良い例: AbstractTranslator は、Translatable インターフェイスを実装します。

17. [参考] 列挙型クラス名には、末尾に Enum を付ける必要があります。列挙型メンバーの名前はすべて大文字で、アンダースコアで区切る必要があります。

注: 列挙型は実際には特別なクラスであり、ドメイン メンバーはすべて定数であり、コンストラクターはデフォルトで強制的にプライベートになります。

良い例: ProcessStatusEnum という名前の列挙のメンバー名: SUCCESS / UNKNOWN_REASON。

18. [参考] 各レイヤーの命名規則:

A) サービス/DAOレイヤーメソッドの命名規則

1) サービス/DAOレイヤーメソッドの命名規則

1)単一オブジェクト get をプレフィックスとして使用します。

2) 複数のオブジェクトを取得するメソッドには接頭辞 list が付き、複数形は listObjects で終わります。

3) 統計値の取得方法には先頭に count が付きます。

4) 挿入メソッドには、save/insert という接頭辞が付きます。

5) 削除メソッドには、remove/delete という接頭辞が付きます。

6) 変更メソッドには、先頭に update が付きます。

B) ドメイン モデルの命名規則

1) データ オブジェクト: xxxDO、xxx はデータ テーブルの名前です。

2) データ転送オブジェクト: xxxDTO、xxx は業務分野に関連する名前です。

3) 表示オブジェクト: xxxVO、xxx は通常、Web ページの名前です。

4) POJO は DO/DTO/BO/VO の総称であり、xxxPOJO という名前を付けることは禁止されています。

定数定義

1. [

必須

] では、マジック値 (事前定義されていない定数) を直接表示することはできません。コード内で。

カウンター例:

String key = "Id#taabao_" tradeId;cache.put(key, value);//get をキャッシュすると、コードをコピーするときに下線が欠落し、結果としてin キャッシュの故障によって引き起こされる問題2. [

必須

] long または Long を割り当てるときは、値の後に小文字の l ではなく大文字の L を使用します。小文字は数字の 1 と混同されやすいです。誤解を招きます。

説明: Long a = 2l; 数値として 21 を書くのか、Long 型として 2 を書くのか。 3. [

推奨事項

] すべての定数を 1 つの定数クラスで管理するのではなく、機能に応じて分類し、個別に管理してください。

注: 大規模で包括的な定数クラスは整理されていないため、変更された定数を見つけるには検索機能しか使用できず、理解や保守には役立ちません。

良い例: キャッシュ関連の定数は CacheConsts クラスの下に配置され、システム構成関連の定数は ConfigConsts クラスの下に配置されます。 4. [

推奨事項

] 定数の再利用には 5 つのレベルがあります: アプリケーション間共有定数、アプリケーション内共有定数、サブプロジェクト内共有定数、

in -package constants 共有定数、クラス内の共有定数。

1) アプリケーション間で定数を共有します。セカンドパーティのライブラリ (通常は client.jar の定数ディレクトリ) に配置されます。

2) アプリケーション内共有定数: ライブラリ (通常はサブモジュールの定数ディレクトリ) に配置されます。

反例: 理解しやすい変数は、アプリケーション内の共有定数としても統一的に定義する必要があります。2 人のエンジニアが 2 つのクラスで「YES」変数を定義しました:

クラス A: public static Final String YES = "yes";

クラス B: public static Final String YES = "y";

A.YES.equals(B.YES)、true であることが期待されますが、実際の戻り値は false であり、オンラインで問題が発生します。

3) サブプロジェクト内の共有定数: つまり、現在のサブプロジェクトの定数ディレクトリ内。

4) パッケージ内の共有定数: つまり、現在のパッケージの下の別の定数ディレクトリにあります。

5) クラス内の共有定数: クラス private static Final 内で直接定義されます。 5【

推奨

】変数の値が一定の範囲内でのみ変化する場合は、enum型を使用して定義します。

注: 名前以外の拡張属性がある場合は、列挙型を使用する必要があります。次の例の数字は、年の

番目の季節を示す拡張情報です。

### 良い例: ###

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;} }

コード形式

1. [必須] 中括弧が空の場合は、単純に {} と記述します。中括弧の間に改行やスペースは必要ありません。空ではないコード ブロックの場合:

1) 左中括弧の前に改行はありません。

2) 左中括弧の後の改行。

3) 右中括弧の前で改行します。

4) 右中括弧の後に else コードがある場合、改行はありません。改行は終了を示す右中括弧の後になければなりません。

2. 左括弧と文字の間にはスペースがありません。同様に、右括弧と文字の間にはスペースがありません。また、左中括弧の前にはスペースが必要です。詳細については、第 5 条の下にある正しいヒントの例を参照してください。

反例: if (space a == b space)

3. [必須] if/for/while/switch/do およびその他の予約語と括弧 スペースを追加する必要があります。

4. [必須] 二項演算子または三項演算子には、左側と右側にスペースが必要です。

説明: 演算子には、代入演算子 =、論理演算子 &&、加算、減算、乗算、除算の記号などが含まれます。

5. [必須] インデントにはスペースを 4 つ使用し、タブ文字は禁止します。

注: タブ インデントを使用する場合は、1 つのタブに 4 つのスペースを設定する必要があります。 IDEA がタブを 4 つのスペースに設定する場合は、「タブ文字を使用」にチェックを入れないでください。Eclipse では、タブにスペースを挿入するにチェックを入れる必要があります。

肯定的な例: (ポイント 1 ~ 5 を含む)

public static void main(String[] args) {//スペース 4 つインデント String Say = "hello";//操作は次のとおりです。シンボルの左側と右側にスペースを入れてください int flag = 0;// キーワード if と括弧の間にはスペースが必要です。括弧内の f と左括弧の間にはスペースは必要ありません。 0 と右括弧 if (flag == 0) {System .out.println(say); }// 左中括弧の前にスペースを追加し、改行しないでください; 左中括弧の後で行を折り返す if ( flag == 1) { System.out.println("world");// 右中括弧の前に改行、そうでない場合は右中括弧の後に、改行なし} else {System.out.println("ok");/ /右中括弧の直後で終了し、改行する必要があります。}}

6, [ 必須]コメントの二重スラッシュとコメントの内容の間には、スペースが 1 つだけ必要です。

肯定的な例:

// これはコメントの例です。二重スラッシュの後にスペースがあることに注意してください。 String param = new String();

以上がJava の命名スタイル、定数定義、コード形式とは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。