DRY (Don't Repeat Yourself)
不出现多次同样的字符串拼接
不出现多次同样的对象访问
不出现相似的函数
不出现相似的模块代码
不出现相似。。。
一切相似的东西,都应该在一个地方表达,然后复用
KISS (Keep It Simple,Stupid)
不过早优化
不过度设计
不复杂化代码
不断重构
XP (eXtreme Programming)
快速迭代
持续集成,不断重构
单元测试
面向对象设计原则
单一职责原则 (The Single Responsibility Principle)
一个东西做一件事情,并把它做好
应该有且仅有一个原因引起类的变更
类的复杂度降低
可读性提高
可维护性提高
变更引起的风险降低
开放-封闭原则 (The Open-Close Principle)
让不能变的变不了,让可变的容易变
软件实体(类,模块,函数等)应该是可以扩展的,但是不可修改的
里氏替换原则 (The Liskov Substitution Principle)
抽象的东东能用具体的东东替代
所有引用基类的地方必须能透明地使用其子类
子类必须完全的实现父类的方法
子类可以有自己的个性
覆盖或实现父类的方法时输入参数可以被放大
覆盖或实现父类的方法时输出结果可以被缩小
接口隔离原则 (The Interface Segregation Principle)
不相关的就不能强制被关注
不应该强迫使用者依赖于他们不用的方法
类间的依赖关系应该建立在最小的接口上
接口尽量要小
接口要高内聚
可提供定制
接口设计粒度要适度
依赖导致原则 (The Dependency Inversion Principle)
容易变的不能被公用
高层模块不应该依赖于低层模块,二者都应该依赖于抽象
抽象不应该依赖于细节,细节应该依赖于抽象
最少知识原则 (Least Knowledge Principe),迪米特法则(Low of Demeter)
不涉及到的就不应该关注
出现在成员变量,方法的输入输出参数中的类被称为朋友类
只和朋友交流
尽量内敛,少对外开放接口
参考资料
《程序员修炼之道-从小共到专家》,The Pragmatic Programmer, From Journeyman to Master
《敏捷软件开发:原则、模式和实践》
《您的设计模式》
《设计模式之禅》
