其他
审查架构、检查代码质量或重构时:用 SOLID…
适用于语言无关的代码审查、架构评审、重构和设计决策,以提升软件的可维护性与可扩展性。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 48/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 85/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 55/100 ×0.15
适用场景
审查架构、检查代码质量或重构时:用 SO通用
解决思路
- 按优先级审查规则类别:1 SOLID Principles(CRITICAL,前缀 solid-);2 Core Principles(CRITICAL,前缀 core-);3 Design Patterns(HIGH,前缀 pattern-);4 Code Organization(HIGH,前缀 org-);5 Naming & Readability(MEDIUM,前缀 name-);6 Functions & Methods(MEDIUM,前缀 func-);7 Comments & Documentation(LOW,前缀 doc-)。
- 应用 solid-srp:单一职责原则——一个类只应有一个引起变化的原因,只做一件事。
- 应用 solid-ocp:开闭原则——对扩展开放,对修改关闭。
- 应用 solid-lsp:里氏替换原则——子类型必须能够替换基类型。
- 应用 solid-isp:接口隔离原则——不要强迫客户端依赖未使用的接口。
- 应用 solid-dip:依赖倒置原则——依赖抽象而非具体实现。
- 应用 core-dry:不要重复自己,保持单一事实来源。
- 应用 core-kiss:保持简单,避免过度工程。
- 应用 core-yagni:不会需要就不要构建,只构建当前需要的。
- 应用 core-separation-of-concerns:分离不同职责。
- 应用 core-composition-over-inheritance:优先使用组合而非继承。
- 应用 core-law-of-demeter:最少知识原则,减少对象间耦合。
- 应用 core-fail-fast:尽早检测并报告错误。
- 应用 core-encapsulation:隐藏实现细节。
- 应用 pattern-factory:用工厂模式处理对象创建。
- 应用 pattern-strategy:用策略模式处理算法变化。
- 应用 pattern-repository:用仓储模式处理数据访问。
- 应用 pattern-decorator:用装饰器模式扩展行为。
- 应用 pattern-observer:用观察者模式处理事件。
- 应用 pattern-adapter:用适配器模式转换接口。
- 应用 pattern-facade:用外观模式提供简化接口。
- 应用 pattern-dependency-injection:用依赖注入实现松耦合。
- 应用 org-feature-folders:按功能而非按层组织文件夹。
- 应用 org-module-boundaries:建立清晰的模块边界。
- 应用 org-layered-architecture:正确分离架构层。
- 应用 org-package-cohesion:把相关代码放在一起,保持包内聚。
- 应用 org-circular-dependencies:避免循环导入或循环依赖。
- 应用 name-meaningful:使用能揭示意图的名称。
- 应用 name-consistent:保持一致的命名约定。
- 应用 name-searchable:避免魔法数字或魔法字符串,使用可搜索的命名常量。
- 应用 name-avoid-encodings:不要使用匈牙利命名法等编码前缀。
- 应用 name-domain-language:使用领域术语命名。
- 应用 func-small:保持函数短小。
- 应用 func-single-purpose:让函数只做一件事。
- 应用 func-few-arguments:限制参数数量。
- 应用 func-no-side-effects:尽量减少副作用。
- 应用 func-command-query:分离命令与查询。
- 应用 doc-self-documenting:让代码自我解释。
- 应用 doc-why-not-what:注释解释为什么,而不是做什么。
- 应用 doc-avoid-noise:避免冗余注释。
- 应用 doc-api-docs:为公共 API 编写文档。
- 审计代码时按 `file:line - [principle] Description of issue` 输出发现,例如 `src/services/UserService.ts:15 - [solid-srp] Class handles validation, persistence, and notifications`。
- 需要详细解释和示例时,阅读对应规则文件,例如 `rules/solid-srp-class.md`、`rules/core-dry.md`、`rules/pattern-repository.md`。
- 用示例落实原则:UserService 只负责编排,构造注入 `UserValidator` 和 `UserRepository`,让验证与持久化各自独立。
- 用示例落实原则:OrderService 依赖 `Repository<Order>` 接口而不是具体仓储实现。
- 用示例落实原则:将 `EMAIL_REGEX` 和 `isValidEmail` 提取为单一来源,避免重复邮箱校验。
- 用示例落实原则:用 `MINIMUM_AGE` 等命名常量替代魔法数字,例如 18。
- 需要重构技巧或设计模式参考时,查阅 Clean Code、Design Patterns、Refactoring、The Pragmatic Programmer,以及 Refactoring Guru、Martin Fowler's Refactoring Catalog、Uncle Bob's Clean Coder Blog、Martin Fowler Enterprise Patterns。
适用边界 · 注意事项
- 当机械套用原则或设计模式会违反 KISS/YAGNI、引入不必要抽象或过度工程时,不要应用。
- 当代码是一次性脚本、临时原型且不会被维护时,不必完整套用所有规则。
- 当与团队既定规范、语言习惯或框架约定冲突时,不要为了原则而强行重构。