java-coding-standards

Solid

Spring Bootサービス向けのJavaコーディング標準:命名、不変性、Optional使用、ストリーム、例外、ジェネリクス、プロジェクトレイアウト。

AI & Automation 196,640 stars 30253 forks Updated 2 days ago MIT

Install

View on GitHub

Quality Score: 93/100

Stars 20%
100
Recency 20%
100
Frontmatter 20%
70
Documentation 15%
100
Issue Health 10%
50
License 10%
100
Description 5%
100

Skill Content

# Javaコーディング標準 Spring Bootサービスにおける読みやすく保守可能なJava(17+)コードの標準。 ## 核となる原則 - 巧妙さよりも明確さを優先 - デフォルトで不変; 共有可変状態を最小化 - 意味のある例外で早期失敗 - 一貫した命名とパッケージ構造 ## 命名 ```java // PASS: クラス/レコード: PascalCase public class MarketService {} public record Money(BigDecimal amount, Currency currency) {} // PASS: メソッド/フィールド: camelCase private final MarketRepository marketRepository; public Market findBySlug(String slug) {} // PASS: 定数: UPPER_SNAKE_CASE private static final int MAX_PAGE_SIZE = 100; ``` ## 不変性 ```java // PASS: recordとfinalフィールドを優先 public record MarketDto(Long id, String name, MarketStatus status) {} public class Market { private final Long id; private final String name; // getterのみ、setterなし } ``` ## Optionalの使用 ```java // PASS: find*メソッドからOptionalを返す Optional<Market> market = marketRepository.findBySlug(slug); // PASS: get()の代わりにmap/flatMapを使用 return market .map(MarketResponse::from) .orElseThrow(() -> new EntityNotFoundException("Market not found")); ``` ## ストリームのベストプラクティス ```java // PASS: 変換にストリームを使用し、パイプラインを短く保つ List<String> names = markets.stream() .map(Market::name) .filter(Objects::nonNull) .toList(); // FAIL: 複雑なネストされたストリームを避ける; 明確性のためにループを優先 ``` ## 例外 - ドメインエラーには非チェック例外を使用; 技術的例外はコンテキストとともにラップ - ドメイン固有の例外を作成(例: `MarketNotFoundException`) - 広範な`catch (Exception ex)`を避ける(中央でリスロー/ログ記録する場合を除く) ```java throw new MarketNotFoundException(slug); ``` ## ジェネリクスと型安全性 - 生の型を避ける; ジェネリックパラメータを宣言 - 再利用可能なユーティリティには境界付きジェネリクスを優先 ```java public <T exten...

Details

Author
affaan-m
Repository
affaan-m/everything-claude-code
Created
4 months ago
Last Updated
2 days ago
Language
JavaScript
License
MIT

Integrates with

Related Skills