java-coding-standards
Spring Bootサービス向けのJavaコーディング標準:命名、不変性、Optional使用、ストリーム、例外、ジェネリクス、プロジェクトレイアウト。
DeepseekModel
官方收录技能
质量 优秀 · 90
v1.0.0
获取
https://deepseekmodel.com/api/download.php?id=affaan-m-ecc-docs-ja-jp-skills-java-coding-standards-skill-md&format=skill
下载 .skill
标准格式,含 system_prompt 与 model_config,导入任意 Agent 框架即可使用
.skill 文件中 system_prompt 字段的实际内容。
name java-coding-standards description Spring Bootサービス向けのJavaコーディング標準:命名、不変性、Optional使用、ストリーム、例外、ジェネリクス、プロジェクトレイアウト。 Javaコーディング標準 Spring Bootサービスにおける読みやすく保守可能なJava(17+)コードの標準。 核となる原則 巧妙さよりも明確さを優先 デフォルトで不変; 共有可変状態を最小化 意味のある例外で早期失敗 一貫した命名とパッケージ構造 命名 // 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 ; 不変性 // 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の使用 // PASS: find*メソッドからOptionalを返す Optional<Market> market = marketRepository.findBySlug(slug); // PASS: get()の代わりにmap/flatMapを使用 return market .map(MarketResponse::from) .orElseThrow(() -> new EntityNotFoundException ( "Market not found" )); ストリームのベストプラクティス // PASS: 変換にストリームを使用し、パイプラインを短く保つ List<String> names = markets.stream() .map(Market::name) .filter(Objects::nonNull) .toList(); // FAIL: 複雑なネストされたストリームを避ける; 明確性のためにループを優先 例外 ドメインエラーには非チェック例外を使用; 技術的例外はコンテキストとともにラップ ドメイン固有の例外を作成(例: MarketNotFoundException ) 広範な catch (Exception ex) を避ける(中央でリスロー/ログ記録する場合を除く) throw new MarketNotFoundException (slug); ジェネリクスと型安全性 生の型を避ける; ジェネリックパラメータを宣言 再利用可能なユーティリティには境界付きジェネリクスを優先 public <T extends Identifiable > Map<Long, T> indexById (Collection<T> items) { ... } プロジェクト構造(Maven/Gradle) src/main/java/com/example/app/ config/ controller/ service/ repository/ domain/ dto/ util/ src/main/resources/ application.yml src/test/java/... (mainをミラー) フォーマットとスタイル 一貫して2または4スペースを使用(プロジェクト標準) ファイルごとに1つのpublicトップレベル型 メソッドを短く集中的に保つ; ヘルパーを抽出 メンバーの順序: 定数、フィールド、コンストラクタ、publicメソッド、protected、private 避けるべきコードの臭い 長いパラメータリスト → DTO/ビルダーを使用 深いネスト → 早期リターン マジックナンバー → 名前付き定数 静的可変状態 → 依存性注入を優先 サイレントなcatchブロック → ログを記録して行動、または再スロー ログ記録 private static final Logger log = LoggerFactory.getLogger(MarketService.class); log.info( "fetch_market slug={}" , slug); log.error( "failed_fetch_market slug={}" , slug, ex); Null処理 やむを得ない場合のみ @Nullable を受け入れる; それ以外は @NonNull を使用 入力にBean Validation( @NotNull 、 @NotBlank )を使用 テストの期待 JUnit 5 + AssertJで流暢なアサーション モック用のMockito; 可能な限り部分モックを避ける 決定論的テストを優先; 隠れたsleepなし 覚えておく : コードを意図的、型付き、観察可能に保つ。必要性が証明されない限り、マイクロ最適化よりも保守性を最適化します。
Agent 识别该技能的关键词,点击任意一个即可复制。
该技能未提供触发词。
下载的 .skill 包内含以下字段。
| 字段 | 说明 |
|---|---|
| format | 格式标识(skill/v1) |
| skill_id | 技能唯一 ID |
| name | 技能名称 |
| version | 版本号 |
| description | 技能描述 |
| category | 所属分类(数组) |
| trigger_words | 触发词列表 |
| tags | 标签列表 |
| source | 来源标识 |
| source_url | 来源链接(本页地址) |
| exported_at | 导出时间(每次下载生成) |
| system_prompt | 系统提示词正文 |
| model_config | 模型参数:provider / model / temperature / max_tokens / top_p |
| examples | 示例 |
| install_guide | 各平台导入说明(Coze / Dify / Claude / 自定义框架) |