序文
最近、Ali の『Code Out Efficient Java Development Manual』を読んでいて、コード スタイルに関する章を読みました。数年間働いた後、この章をもう一度見てみると、いくつかのコード仕様が実装されていないことがわかりました。大企業はコード開発仕様により多くの注意を払っていますが、ほとんどの中小企業はそれほど注意を払っていません。私の意見では、良いコーディング習慣はコードの読みやすさと保守性の向上に役立ち、優れたプログラマーにとって不可欠な資質です。
命名規則
包名同一使用小写,点分隔符之间有且仅有一个自然语义的英文单词。包名统一使用单数形式
ただし、クラス名に複数の意味がある場合は、複数形を使用できます。抽象类命名使用Abstract或Base开头
; 例外クラス名は Exception で終わり、テスト クラス名はテスト対象のクラスの名前で始まり、Test で終わります。类型与中括号紧挨相连来定义数组。
- 列挙型クラス名の接尾辞は Enum, です
枚举成员名称需要全大写,单词间用下划线隔开
。
注釈の内容を減らし、自然な説明の役割を果たすために、名前はテキストから明確である必要があります。不規則な略語はコードを理解しにくくする可能性があり、さらに大きな罪は他の人を間違った方向に導く可能性があります。たとえば、条件を condi と省略すると、同様の省略形はコードの可読性を低下させます。
一般に、変数の名前付けは小さいキャメルケース形式を満たす必要があります。ただし、特殊な場合があります在定义类成员变量的时候,特别是在POJO类中,针对布尔类型的变量,命名不要加is前缀,否则部门框架解析会引起序列化错误
。たとえば、フラグを削除するかどうかを定義する場合、成员变量为Boolean isDeleted,它的getter方法也是isDelete(),在框架反向解析的时候,“误以为”对应的属性名是delete,导致获取不到属性,进而抛出异常
. ただし在数据库建表中,推荐表达是与否的值采用is_xxx的命名方式
、この場合は設定する必要があり、データ テーブルの is_xxx フィールドは POJO クラスの属性 Xxx にマップされます。
コードの表示スタイル
インデント
本推荐使用4个空格缩进,禁止使用Tab键
。異なるエディターではタブの解析に一貫性がないため、視覚的なエクスペリエンスが異なり、異なるエディター間ではスペースに互換性があります。
空間
スペースの使用はさらに次のように規制されます。
- 二項演算子および三項演算子の前にはスペースを入れる必要があります
注释的双斜杠与注释内容之间有且仅有一个空格
方法参数在定义和传入时,多个参数逗号后面必须加空格
- 中括弧内のコンテンツが空の場合は、単純な Ctrip {} で十分であり、中括弧内の改行やスペースは必要ありません。
- 左右の括弧と括弧内の隣接する文字の間にスペースを入れてはいけません
左大括号前需要加空格
例:
try{
// 任何二目,三目运算符的左右两边都必须加一个空格
boolean condition = (count == 0) ? true : false;
// 关键词if与左侧小括号之间必须有一个空格
// 左大括号前需要加空格,左大括号后必须换行
if (condition) {
System.out.println("hello");
// else 的前后需要加空格
} else {
System.out.println("world");
}
// 如果大括号中内容为空,则简洁的携程{}即可,大括号内无需换行和空格
} catch (Exception e) {
}
// 方法参数在定义和传入时,多个参数逗号后面必须加空格
String result = getString(one, two, three);
改行
规定单行字符数不超过120个,超出则要换行
、改行は次の規則に従います。
- 演算子は次のようにラップします
- メソッド呼び出しのドット表記は次のようにラップされます。
- メソッド呼び出し内の複数のパラメータをラップする必要がある場合は、カンマの後にラップします。
- 括弧の前で改行しないでください
约定一个方法内一般不超过80行
コメント、改行、空白行、左右の中括弧を除くメソッド行の数。80 行を超えるメソッドは 5% 未満のみであり、これらのメソッドには通常、最適化の余地があります。
制御文
- if、else、while、do-while などのステートメントでは中括弧を使用する必要があります。コードが 1 行しかない場合でも、中括弧は省略できません。
在条件表达式中不允许有复制操作,也不允许在判断表达式中出现复杂的逻辑组合。
- 多層ネストは 3 レベルを超えません
超过三层的if-else逻辑判断代码,推荐使用卫语句、策略模式、状态模式等来实现
。 - 否定論理演算子の使用は避けてください。たとえば、if(x<10) は x が 10 未満であることを表しますが、if(!(x>=10)) は使用できません。
ガードステートメントの例:卫语句就是把复杂的条件表达式拆分成多个条件表达式,比如一个很复杂的表达式,嵌套了好几层的if - then-else语句,转换为多个if语句,实现它的逻辑,这多条的if语句就是卫语句.
if (obj != null) {
doSomething();
}
转换成卫语句以后的代码如下:
if (obj == null) {
return;
}
doSomething();
コードコメント
クラス、クラス属性、およびクラス メソッドに関するコメントは、ドキュメント コメントの形式を使用して、Javadoc 仕様に従う必要があります
/** */
。
- enum のアノテーションは必要ですが、そのコードは非常に安定しています。定義と使用に誤りがある場合、通常はより大きな影響が生じます。
- コメントの内容は属性値の意味の説明だけでなく、注意事項やビジネスロジックなども含めることができます。
- 列挙型クラスの削除または変更には大きなリスクが伴います。廃止された属性は直接削除できず、廃止としてマークする必要があり、廃止の論理的考慮事項とビジネス背景をコメントで説明します。
単一行のコメントと複数行のコメントは、特に強調して此类注释不允许写在代码后方
コードの上に記述する必要があります。これは、不均一なコメントやコード レイアウトの混乱を避けるためです。