mcpField
1
121-java-object-oriented-design

121-java-object-oriented-design

github.com/jabrena开发456475 次安装1 天前更新
代码仓库

关于 121-java-object-oriented-design

121-java-object-oriented-design 是一项依据面向对象设计指南审查和重构 Java 代码的技能,涵盖 SOLID、类设计、对象创建、方法和代码异味,并要求改动前后进行编译检查。

主要功能

  1. 01分类识别面向对象设计问题
  2. 02选择针对性的设计参考
  3. 03涵盖设计原则、类和代码异味
  4. 04指导渐进式且保持行为的重构
  5. 05要求编译与完整验证

适用场景

  1. 01审查 Java 代码中的设计问题
  2. 02在保持行为的前提下重构代码异味
  3. 03改进类、方法或对象创建设计

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/jabrena/plinth --skill 121-java-object-oriented-design

安装后在 Claude Code 中输入/121-java-object-oriented-design确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
121-java-object-oriented-design-oop-concepts.md
121-java-object-oriented-design-code-smells.md
121-java-object-oriented-design-methods.md
121-java-object-oriented-design-enums-annotations.md
121-java-object-oriented-design-exceptions.md
121-java-object-oriented-design-object-creation.md
121-java-object-oriented-design-classes-interfaces.md
121-java-object-oriented-design-principles.md

详细介绍

Java 面向对象设计指南

根据对请求和受影响代码的评估,选用有针对性的面向对象设计参考资料,审查并改进 Java 代码。

此技能涵盖哪些内容?

  • 基本设计原则(SOLID、DRY、YAGNI)
  • 类和接口设计:组合优于继承、不可变性、尽量缩小可访问范围、访问器方法
  • 核心面向对象概念:封装、继承、多态
  • 对象创建模式:静态工厂方法、Builder、Singleton、依赖注入、避免创建不必要的对象
  • 面向对象设计中的代码异味:上帝类、Feature Envy、不恰当的亲密关系、拒绝的遗赠、霰弹式修改、数据泥团
  • 方法设计:参数校验、防御性复制、谨慎设计方法签名、使用空集合而非 null、Optional 的用法
  • 异常处理:受检异常与运行时异常、标准异常、捕获失败时的消息、不得静默忽略异常

**范围:**首先对适用的面向对象设计问题进行分类,然后只加载这些问题所需的针对性参考资料。如果重构涉及多个问题领域,则加载多份参考资料。

约束

应用任何面向对象设计改动之前,先确保项目能够编译。如果编译失败,立即停止,解决问题后再继续。完成改进后,运行完整验证。

  • 强制要求:应用任何改动之前,运行 ./mvnw compile 或 mvn compile
  • 安全性:如果编译失败,立即停止,不得继续——编译失败属于阻断性问题
  • 验证:应用改进后,运行 ./mvnw clean verify 或 mvn clean verify
  • 渐进式披露:阅读参考资料前,先对适用的面向对象设计问题进行分类,然后只阅读与这些问题对应的参考资料
  • 多问题领域改动:仅当请求或已诊断的代码问题涉及多个问题领域时,才阅读多份针对性参考资料
  • 保持行为不变:进行有针对性、渐进式的重构,不改变可观察到的业务行为
  • 渐进式安全:每次重要重构后都运行编译,并确保改动易于回退,以便在验证发现回归问题时进行回退
  • 依赖安全:确认重构不会破坏导入、依赖、类关系或既有契约
  • 相邻技能:专门处理类型设计时使用技能 122,专门处理异常时使用技能 126;只有当这些主题属于范围更广的面向对象设计审查的一部分时,才使用重叠的技能 121 参考资料
  • 边界情况:如果请求范围不明确,请先停止并提出澄清问题,再应用改动
  • 边界情况:如果缺少必需的输入、文件或工具,请说明缺少的内容,并询问是否继续提供设置指导

何时使用此技能

  • 审查 Java 代码的面向对象设计
  • 重构 Java 代码的面向对象设计
  • 改进 Java 代码的面向对象设计
  • 修正 Java 代码中对面向对象概念的误用
  • 识别并解决 Java 代码中的代码异味
  • 改进 Java 代码中的对象创建模式
  • 改进 Java 代码中的方法设计
  • 改进 Java 代码中的异常处理

工作流

  1. 进行 OOD 更改前编译项目

运行 ./mvnw compile 或 mvn compile;如果编译失败,立即停止。

  1. 评估代码并分类 OOD 问题

在阅读实现指南之前,先分析请求和受影响的 Java 代码。将每个相关问题归入一个或多个关注点:

  • 基本原则:违反 SOLID、DRY 或 YAGNI。
  • 核心 OOP 概念:误用封装、继承或多态。
  • 代码异味:上帝类、特性嫉妒、不当亲密关系、拒绝继承、散弹式修改或数据泥团。
  • 对象创建:工厂、构建器、单例、依赖注入或不必要的对象创建。
  • 类和接口:可访问性、公共字段、可变性、组合或继承设计。
  • 枚举和注解:整型常量、序数值、位字段、序数值索引或缺少 @Override。
  • 方法:参数验证、防御性副本、签名、空集合或 Optional。
  • 异常:更广泛的 OOD 审查中涉及的异常契约。

如果请求专门针对类型设计,请使用 skill 122。如果专门针对异常处理,请使用 skill 126。

  1. 仅读取适用的 OOD 参考资料

将分类后的关注点映射到相关参考资料:

  • 对于 SOLID、DRY 或 YAGNI,请阅读 references/121-java-object-oriented-design-principles.md。
  • 对于封装、继承或多态,请阅读 references/121-java-object-oriented-design-oop-concepts.md。
  • 对于面向对象的代码异味,请阅读 references/121-java-object-oriented-design-code-smells.md。
  • 对于工厂、构建器、单例、依赖注入或不必要的对象,请阅读 references/121-java-object-oriented-design-object-creation.md。
  • 对于类和接口边界、可访问性、可变性、组合或继承设计,请阅读 references/121-java-object-oriented-design-classes-interfaces.md。
  • 对于枚举、序数值、位字段、枚举查找或 @Override,请阅读 references/121-java-object-oriented-design-enums-annotations.md。
  • 对于方法契约、验证、防御性副本、签名、集合返回值或 Optional,请阅读 references/121-java-object-oriented-design-methods.md。
  • 对于更广泛的 OOD 审查中涉及的异常契约,请阅读 references/121-java-object-oriented-design-exceptions.md。

对于涉及多个关注点的重构,请阅读所有必需的参考资料,但不要阅读无关资料。

  1. 实施有针对性的重构

按影响程度排列问题优先级:CRITICAL、MAINTAINABILITY、FLEXIBILITY 或 CODE_QUALITY。针对每个已诊断的问题,实施适当且最小的重构,同时保留可观察行为:

  • 提取类或方法,以恢复职责聚焦。
  • 引入或完善抽象,以支持扩展、接口隔离和依赖倒置。
  • 修正继承层次以保持可替换性,或用组合替代继承。
  • 移动行为以消除特性嫉妒并改善封装。
  • 针对数据泥团引入内聚的值对象或参数对象。
  • 隐藏暴露的状态并减少不必要的耦合。

逐步实施更改,并在每次重要重构后编译。

  1. 通过完整构建进行验证

应用改进后运行 ./mvnw clean verify 或 mvn clean verify。

  1. 报告已实施的 OOD 改进

按影响程度和关注点报告发现、使用的相关参考资料、实施的重构、对可维护性/灵活性/可测试性的益处、保留行为的证据,以及最终的编译和测试结果。

参考资料

如需详细指导、示例和约束,请参阅:

评论

支持 Markdown