Skip to content

Commit c9ec648

Browse files
committed
docs: Improve document
- @snippetのサンプルコードを追加 - シールクラスの記述をブラッシュアップ - レコードパターンの記載を校正 - switchのパターンマッチングのコードサンプルでNullPointerExceptionが出てしまう場合を考慮 - switch文のコード例でインデント不正を修正
1 parent 3aa2694 commit c9ec648

File tree

1 file changed

+44
-7
lines changed

1 file changed

+44
-7
lines changed

documents/forJava/Javaコーディング規約.md

Lines changed: 44 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -522,6 +522,29 @@ head:
522522
ソースコード管理システムで管理されている
523523
- サンプルコードを記載する場合は、`{@snippet}`タグを利用する。
524524

525+
外部ファイルから引用する例:
526+
527+
```java
528+
/**
529+
* ユーザー登録処理の例
530+
* {@snippet file="UserRegistrationExample.java" region="registration"}
531+
*/
532+
```
533+
534+
インラインでサンプルコードを記載する例:
535+
536+
```java
537+
/**
538+
* ユーザー登録処理の例
539+
* {@snippet :
540+
* User user = new User();
541+
* user.setName("田中太郎");
542+
* user.setEmail("tanaka@example.com");
543+
* userRepository.save(user);
544+
* }
545+
*/
546+
```
547+
525548
## インポート
526549

527550
- `java.lang`パッケージはインポートしない
@@ -1521,8 +1544,8 @@ head:
15211544
boolean off = false;
15221545
switch (day) {
15231546
case SUNDAY, SATURDAY:
1524-
off = true;
1525-
break;
1547+
off = true;
1548+
break;
15261549
};
15271550
```
15281551

@@ -1534,8 +1557,8 @@ head:
15341557
switch (day) {
15351558
case SUNDAY:
15361559
case SATURDAY:
1537-
off = true;
1538-
break;
1560+
off = true;
1561+
break;
15391562
};
15401563
```
15411564

@@ -1552,7 +1575,7 @@ head:
15521575
case Long l -> String.format("long %d", l);
15531576
case Double d -> String.format("double %f", d);
15541577
case String s -> String.format("String %s", s);
1555-
default -> obj.toString();
1578+
default -> Objects.toString(obj);
15561579
};
15571580
}
15581581
```
@@ -2073,7 +2096,8 @@ head:
20732096

20742097
## レコードパターン
20752098

2076-
- データの分解と型チェックを同時に行えるレコードパターンは、コードの可読性と安全性を向上させるため、レコードを使用する場合はレコードパターンを用いて記述することを推奨する。
2099+
- レコードパターンは、データの分解と型チェックを同時に行えるため、冗長なコードの削減、型安全性の向上、IDEによる補完やリファクタリング支援などのメリットがあります。
2100+
これにより、コードの可読性・保守性・安全性が高まるため、レコードを使用する場合はレコードパターンを用いて記述することを推奨します。
20772101

20782102
良い例:
20792103

@@ -2099,7 +2123,20 @@ head:
20992123

21002124
- 明確な方針で、利用する・利用しないを統一すること
21012125
方針無く、`sealed`を利用するとコードの保守性や柔軟性が悪くなります。
2102-
各プロジェクトで、`sealed`を利用しないか、`sealed`を利用しても良い箇所について方針を決めた上で使用するようにしてください。 (例:プロジェクト内で使用する共通機能ライブラリに限定して使用する。)
2126+
各プロジェクトで、`sealed`を利用しないか、`sealed`を利用しても良い箇所について方針を決めた上で使用するようにしてください。
2127+
2128+
方針例:
2129+
- プロジェクト内で使用する共通機能ライブラリに限定して使用する
2130+
- 外部公開APIでは禁止し、内部ユーティリティやドメイン層のみ許可する
2131+
- サードパーティ連携部分では利用しない
2132+
- 全体で利用しない
2133+
など、用途や公開範囲に応じて具体的な方針を決めてください。
2134+
2135+
**【補足:シールクラス(sealed classes)とは】**
2136+
Javaのsealedクラスは、継承できるサブクラスを明示的に制限する仕組みです。
2137+
これにより、ドメインモデルの制約強化やパターンマッチングの網羅性チェックが可能となり、意図しない拡張や誤用を防ぐことができます。
2138+
典型的な利用例としては、状態や種類が限定されるドメイン(例:イベント種別、計算式のノード型など)の表現や、パターンマッチング(switch文・式)で全ケースを網羅的に扱いたい場合などが挙げられます。
2139+
メリットは安全性・可読性の向上ですが、柔軟な拡張が難しくなるデメリットもあるため、利用方針を明確に定めてください。
21032140

21042141
## テキストブロック
21052142

0 commit comments

Comments
 (0)