1. 面向对象设计原则
- SOLID 原则:面向对象设计的五大基本原则,分别是单一职责(SRP)、开闭(OCP)、里氏替换(LSP)、接口隔离(ISP)和依赖倒置(DIP),旨在提高类的内聚性和模块的可扩展性。
- Interface Segregation(接口隔离):不应强迫客户端依赖它们不使用的方法,应将大接口拆分为职责单一的多个小接口,减少模块间不必要的耦合。
- Dependency Inversion(依赖倒置):高层模块不依赖于低层模块,二者应都依赖于抽象(接口或抽象类),以实现松耦合和灵活替换。
- Composition Over Inheritance:优先使用组合而非继承。
2. 编码简化与演进原则
- DRY(Don’t Repeat Yourself):避免重复代码或逻辑,将公共功能抽取并复用,以减少维护成本和错误风险。
- KISS(Keep It Simple, Stupid):保持设计和实现尽可能简单直接,摒弃不必要的复杂度,让代码易读易改。
- YAGNI(You Aren’t Gonna Need It):只为当前需求编写功能,不为未来可能不会用到的特性预先设计,避免“功能膨胀”。
- TDD (Test-Driven Development):先写测试,再写能通过测试的最少代码,推动良好设计。
3. 架构与模块化原则
- Separation of Concerns(关注点分离):将系统划分为互相独立的模块,每个模块只关注单一职责,降低耦合、提高重用。
- Open/Closed(开闭原则):软件实体对扩展开放、对修改封闭,通过新增代码来实现新功能,而不是直接修改已有代码,保证系统稳定性。
- Law of Demeter(迪米特法则):也称最少知识原则,规定一个对象应尽量少了解其他对象的内部细节,只与“直接朋友”通信,从而增强模块独立性。
4. 用户体验与安全原则
- Principle of Least Astonishment(最少吃惊原则):系统或组件的行为应符合用户或调用者的预期,避免带来意外或令人困惑的结果,从而提升可用性。
5.可演进系统的设计哲学
原则 | 说明 |
---|
可修改性优先于完美性 | 代码不是一次写完,是不断演进的 |
架构是为了能改,不是不能动 | 好架构是“可变架构” |
小步提交、小步发布 | 小粒度改动更容易回滚、验证 |
6.架构层面的设计原则
原则 | 含义 |
---|
分层(Layered) | 不同职责分层(如表示层、服务层、数据层) |
模块化(Modularity) | 功能模块解耦、边界清晰 |
高内聚、低耦合 | 模块内部紧密协作,模块之间尽量独立 |