3.4. コード記述規則
3.4.1. アクセス修飾子
- クラスフィールドは
privateを基本とします。 - 外部公開が必要な場合にのみ
publicメソッドを提供します。 - パッケージ内部でのみ使用されるクラスはパッケージプライベート(アクセス修飾子省略)で宣言します。
3.4.2. import 規則
- ワイルドカード import (
import java.util.*) は使用しません。 - 使用していない import は必ず削除します。
- Google Java Format が import の並び替えを自動的に処理します。
3.4.3. マジックナンバーの禁止
リテラル値をコードに直接使用しません。定数として定義し、意味を明確にします。
java
// 悪い例
if (retryCount > 3) { ... }
// 良い例
private static final int MAX_RETRY_COUNT = 3;
if (retryCount > MAX_RETRY_COUNT) { ... }3.4.4. Optional 使用規則
- 戻り値の型として
Optionalを使用します。フィールドやパラメータには使用しません。 Optional.get()を直接呼び出しません。orElseThrow()、orElse()、ifPresent()を使用します。
java
// 悪い例
UsersRecord record = userRepository.findById(id).get();
// 良い例
UsersRecord record = userRepository.findById(id)
.orElseThrow(() -> new UserNotFoundException(id));3.4.5. Null 処理
nullを返却しません。空のコレクション(Collections.emptyList())またはOptionalを使用します。- パラメータの null チェックは
Objects.requireNonNull()を使用します。 @Nullable、@NonNullアノテーションを積極的に活用します。
3.4.6. 文字列処理
- 文字列結合は
+演算子の代わりにString.format()またはテキストブロック(""")を使用します。 - 空文字列の比較は
String.isEmpty()またはString.isBlank()を使用します。