关于 solid-java
solid-java 是面向 Java 25+ 开发的技能,用于落实模块化架构和 SOLID 原则。它通过强制复用检查、结构规范及常见组件参考和模板指导编码 Agent。
主要功能
- 01按功能划分模块
- 02编码前强制检查复用
- 03SOLID 原则参考资料
- 04模块与分层模板
- 05代码长度与文档规范
适用场景
- 01规划新的 Java 功能结构
- 02新增逻辑前检查共享代码
- 03搭建服务与仓库
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ fusengine/ agents --skill solid-java安装后在 Claude Code 中输入/solid-java确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/architecture-patterns.mddependency-inversion.mdinterface-segregation.mdliskov-substitution.mdopen-closed.mdsingle-responsibility.mdsolid-principles.mdreferences/templates/error.mdinterface.mdmodule.mdrepository.mdservice.mdtest.md详细介绍
SOLID Java 为 Java 25+(当前 LTS)强制规定模块化架构:每项功能都位于 `modules/[feature]/` 下(控制器、服务、仓库、接口、模型/DTO),共享代码放在 `modules/core/` 中;接口只能位于 `modules/[feature]/interfaces/` 中;控制器不得超过 50 行,并将工作委托给服务;DTO 使用记录类型,受限层次结构使用密封类型;每个公共方法都必须附带 Javadoc。
编写任何新代码之前,都必须与 modules/core/services 和 modules/core/interfaces 中的代码进行 DRY 检查。概述请参阅 solid-principles.md;SRP/OCP/LSP/ISP/DIP 的详细说明请参阅各项原则对应的参考文档;模块、服务、接口、仓库、错误和测试脚手架请参阅模板。
SOLID Java - 模块化架构
Agent 工作流(强制)
进行任何实现之前,必须并行启动 3 个 Agent,每个都单独调用一次 Agent,并指定 name:
- fuse-ai-pilot:explore-codebase - 分析现有架构
- fuse-ai-pilot:research-expert - 通过 Context7 核实 Java 文档
- fuse-ai-pilot:sniper - 实现后的验证
DRY - 创建前先复用(强制)
编写任何新代码之前:
- 在代码库中使用 Grep 查找相似接口、服务或逻辑
- 检查共享目录:
modules/core/services/、modules/core/interfaces/ - 如果存在相似代码 -> 扩展或复用,而不是重复实现
- 如果代码会被 2 个或更多功能使用 -> 在
modules/core/中创建
架构(模块为强制要求)
| 层 | 位置 | 最大行数 |
|---|---|---|
| 控制器 | modules/[feature]/controllers/ | 50 |
| 服务 | modules/[feature]/services/ | 100 |
| 仓库 | modules/[feature]/repositories/ | 100 |
| 接口 | modules/[feature]/interfaces/ | 30 |
| 模型/DTO | modules/[feature]/models/ | 50 |
| 共享代码 | modules/core/{services,interfaces,models}/ | - |
绝不能使用扁平的 src/ 结构——始终使用 modules/[feature]/
关键规则(强制)
| 规则 | 值 |
|---|---|
| 文件限制 | 100 行(在 90 行处分拆) |
| 控制器 | 少于 50 行,将工作委托给服务 |
| 接口 | 只能放在 modules/[feature]/interfaces/ 中 |
| Javadoc | 为每个公共方法编写文档 |
| 记录类型 | 用于 DTO(Java 16+) |
| 密封类型 | 用于受限层次结构(Java 17+) |
参考指南
概念
| 主题 | 参考资料 | 何时查阅 |
|---|---|---|
| SOLID 概述 | solid-principles.md | 快速参考 |
| SRP | single-responsibility.md | 臃肿的类 |
| OCP | open-closed.md | 添加提供方 |
| LSP | liskov-substitution.md | 契约 |
| ISP | interface-segregation.md | 臃肿的接口 |
| DIP | dependency-inversion.md | 注入 |
| 架构 | architecture-patterns.md | 模块化模式 |
模板
| 模板 | 何时使用 |
|---|---|
| module.md | 功能模块结构 |
| service.md | 业务逻辑服务 |
| interface.md | 契约定义 |
| repository.md | 数据访问层 |
| error.md | 自定义异常 |
| test.md | 使用模拟对象的单元测试 |
禁止事项
| 反模式 | 修正方法 |
|---|---|
| 文件超过 100 行 | 在 90 行处分拆 |
| 在实现文件中定义接口 | 移至 interfaces/ 目录 |
在服务中使用 new ConcreteClass() | 使用依赖注入 |
扁平的 src/ 结构 | 使用 modules/[feature]/ |
| 上帝类 | 按职责拆分 |
评论
支持 Markdown