设计原则

  1. 单一职责原则
    • 一个类、接口、方法只负责一类、件事
    • class P {} 如果变复杂了, 有必要重构=> class P1 {} + class P2 {}
  2. 里氏代换原则(继承)
    • class A: B {}, 如果B可以, 那么A一定可以, 反之不一定
  3. 依赖倒置原则(面向接口)
    • 抽象:接口(抽象类是C++的,Java、Swift、OC没有); 细节:符合抽象的具体的类、子类,可以实例化
    • 抽象不依赖细节;细节应该依赖抽象;高层模块不应该依赖低层模块,两者都应该依赖其抽象;link
    • 面向接口(抽象类)编程
  4. 接口隔离原则(提取、细分,精简单一)
    • 提取公共,细分不同
    • class A: P{}, class B: P {} => class A: P1, P2 {}, class B: P1, P3
  5. 迪米特法则(最少依赖,降低耦合)
    • 对于被依赖的类,向外公开的方法应该尽可能的少
    • 对依赖的类,只依赖应该依赖的对象(不跨层依赖)
  6. 开放封闭原则(扩展优先于修改)
    • 尽量通过扩展软件实体来解决需求变化,而不是通过修改已有的代码
    • func request(a: String) {} => func request(a: String, b: String = nil) {}
  7. DRY原则
    • Don't Repeat Yourself,不要重复实现
  8. Shy原则
    • 不要把只和自己有关的信息暴露给其它部分
  9. 合成复用原则
    • 能用组成就不要用继承

最近才总结这些,有几点感受

  • 自己平时开发本就是这么来的,虽然之前根本没听说过这些,这些原则不过是一种常规的认识的总结
  • 这些除了指导开发,沟通方面的作用更大,比如面试,比如多人协作出现冲突,论证自己的观点等
  • 这些远着相比系统化的代码设计、工程架构等还是比较基础的东西

results matching ""

    No results matching ""