用途:该技能在生成非平凡应用的代码时,指导应用成熟的软件设计原则,产出易理解、易修改、易测试、易扩展的代码库。
主要能力:一是核心原则,强调简洁优先,遵循 YAGNI 与 KISS,不做过度设计。二是接口设计,优先使用标准库接口(如 Go 的 io.Reader、io.Writer),并在使用点定义接口而非集中定义。三是包与模块组织,按用途而非项目名命名包,并遵循各语言约定(Go 单程序用根 main.go、多程序用 cmd/、库用功能包;Java 用 Maven/Gradle 的 src/main/java;Python 用 src/ 或扁平结构加 init.py),且不假设所有语言都有 cmd/。四是分层架构,分离关注点,依赖只向内流动,常见方式有 MVC 与领域驱动设计(DDD),避免无价值的中层包装。五是 OOP 优先于过程式或函数式,用接口或抽象类定义契约,优先组合而非继承,将可变条件逻辑提取为策略类。六是 SOLID 五原则作为代码质量检查。七是设计模式选择,按问题类型从创建型、结构型、行为型模式表中选取,再到 references/{pattern-name}/{language}.md 查看对应 Go、Java、Python 实现。八是依赖管理,使用依赖注入、注入抽象而非具体实现、避免循环依赖。九是可测试性,避免静态状态与可变单例,用依赖注入便于 mock,倾向纯函数,方法保持单一职责。十是代码质量规则与应避免的反模式(上帝类、意大利面代码、魔法值、过早优化、过度继承、过度工程、接口重复、过早抽象、无用代码等)。
使用方式:在生成需要正确设计结构的代码时引用本技能,先分析问题,再从模式表选择合适模式,并按语言查阅参考文件;文档中的模式表未给出具体安装命令或调用命令。
适用场景:任何非平凡应用、需要长期维护与扩展、需要测试和团队并行开发的代码生成任务。
限制:模式是工具而非规则,应在适用时使用;不应为将来可能的需求提前抽象;不同语言约定不同,文档未提供具体版本的收费、价格或平台信息。