SuperAPI AI 工具集

121-java-object-oriented-design

编程与开发

查看项目

更新于 10-15 12:25

技能介绍

用途

本技能用于审查、改进或重构 Java 面向对象设计。它会在评估请求和受影响代码后,选择聚焦的面向对象设计参考资料,对 Java 代码进行审查与改进。

主要能力

技能覆盖以下方面:

  • 基础设计原则:SOLID、DRY、YAGNI
  • 类与接口设计:组合优于继承、不可变性、最小化可访问性、访问器方法
  • 核心 OOP 概念:封装、继承、多态
  • 对象创建模式:静态工厂方法、Builder、Singleton、依赖注入、避免不必要的对象
  • OOD 代码坏味道:上帝类(God Class)、依恋情结(Feature Envy)、不当亲密(Inappropriate Intimacy)、被拒绝的遗赠(Refused Bequest)、霰弹式修改(Shotgun Surgery)、数据泥团(Data Clumps)
  • 方法设计:参数校验、防御性拷贝、谨慎的签名、空集合优于 null、Optional 用法
  • 异常处理:受检异常与运行时异常、标准异常、失败捕获消息、不静默忽略

使用方式

技能的工作流程如下:

  1. 在应用 OOD 变更前编译项目:运行 ./mvnw compile 或 mvn compile,若编译失败立即停止。
  2. 评估代码并分类 OOD 关注点:分析请求和受影响的 Java 代码,将每个相关问题归入一个或多个关注点(基础原则、核心 OOP 概念、代码坏味道、对象创建、类与接口、枚举与注解、方法、异常)。
  3. 只读取适用的 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,枚举与注解对应 references/121-java-object-oriented-design-enums-annotations.md,方法对应 references/121-java-object-oriented-design-methods.md,异常对应 references/121-java-object-oriented-design-exceptions.md。跨关注点的重构需读取所有相关参考,但不读取无关参考。
  4. 应用聚焦的重构:按影响优先级(CRITICAL、MAINTAINABILITY、FLEXIBILITY、CODE_QUALITY)排序,对每个诊断出的关注点应用最小合适的重构,同时保持可观察行为不变。具体包括:提取类或方法以恢复聚焦职责;引入或改进抽象以支持扩展、接口隔离和依赖倒置;修正继承层次以保持可替换性,或用组合替代继承;移动行为以消除依恋情结并改进封装;为数据泥团引入内聚的值对象或参数对象;隐藏暴露的状态并减少不必要的耦合。增量应用变更,每次重要重构后编译。
  5. 完整构建验证:应用改进后运行 ./mvnw clean verify 或 mvn clean verify。
  6. 报告应用的 OOD 改进:按影响和关注点报告发现、使用的聚焦参考、应用的重构、可维护性/灵活性/可测试性收益、行为保持证据,以及最终编译和测试结果。

适用场景

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

限制

  • 在应用任何 OOD 变更前,确保项目可编译。若编译失败,立即停止,直到解决后才能继续。
  • 强制要求:在应用任何变更前运行 ./mvnw compile 或 mvn compile。
  • 安全要求:若编译失败,立即停止,不得继续——编译失败是阻塞条件。
  • 验证要求:应用改进后运行 ./mvnw clean verify 或 mvn clean verify。
  • 渐进式披露:在阅读参考资料前先分类适用的 OOD 关注点,然后只阅读映射到这些关注点的参考。
  • 多关注点变更:仅当请求或诊断出的代码问题跨越关注点边界时,才阅读多个聚焦参考。
  • 保持行为:应用聚焦的增量重构,不改变可观察的业务行为。
  • 增量安全:每次重要重构后编译,并保持变更易于回滚,以防验证发现回归。
  • 依赖安全:确认重构不会破坏导入、依赖、类关系或既有契约。
  • 相邻技能:专用类型设计工作使用技能 122,专用异常处理工作使用技能 126;仅当这些主题属于更广泛的 OOD 审查时,才使用重叠的技能 121 参考。
  • 边界情况:若请求范围不明确,停止并在应用变更前提出澄清问题。
  • 边界情况:若缺少必需的输入、文件或工具,报告缺失内容并询问是否继续提供设置指导。

参考资料

详细指导、示例和约束见以下文件:

  • 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
  • references/121-java-object-oriented-design-enums-annotations.md
  • references/121-java-object-oriented-design-methods.md
  • references/121-java-object-oriented-design-exceptions.md