软件设计原则

在设计软件模块的时候, 我们往往会遵循一些原则, 这些原则五花八门,有的是来自于面向对象领域, 有的是来自于纯设计领域。 有些原则在某些场景下会不灵光。 这篇文章主要就是聊聊这些原则。
在这里, 我将软件设计原则分为三类。

  • 总的原则
  • 通用的原则
  • 特殊的原则

总的原则

没有银弹

通用的原则

分离关注点

正交原则

好莱坞原则

单一职责/科里定律

DRY

KISS

最少知识原则/别让我思考

最小惊讶原则

YAGNI-不要过度/三适里面的适度

童子军原则

特殊的原则

命令与查询分离

组合优于继承

约定优于配置

依赖倒置

里氏替换

接口隔离

开闭原则

共同封闭

共同重用

封装经常修改的代码

The Rule of Three

总结

如果将一个软件看做一个系统的话,那么这些原则最终的目的是让这个系统达到一个平衡。 在满足系统目的的前提下, 实现方式尽可能的简单, 尽可能的简单是控制复杂度的另外一种表述。