软件设计原则
在设计软件模块的时候, 我们往往会遵循一些原则, 这些原则五花八门,有的是来自于面向对象领域, 有的是来自于纯设计领域。 有些原则在某些场景下会不灵光。 这篇文章主要就是聊聊这些原则。
在这里, 我将软件设计原则分为三类。
- 总的原则
- 通用的原则
- 特殊的原则
总的原则
没有银弹
通用的原则
分离关注点
正交原则
好莱坞原则
单一职责/科里定律
DRY
KISS
最少知识原则/别让我思考
最小惊讶原则
YAGNI-不要过度/三适里面的适度
童子军原则
特殊的原则
命令与查询分离
组合优于继承
约定优于配置
依赖倒置
里氏替换
接口隔离
开闭原则
共同封闭
共同重用
封装经常修改的代码
The Rule of Three
总结
如果将一个软件看做一个系统的话,那么这些原则最终的目的是让这个系统达到一个平衡。 在满足系统目的的前提下, 实现方式尽可能的简单, 尽可能的简单是控制复杂度的另外一种表述。