一、可维护性
高内聚、低耦合
高内聚,是针对一个组件(类)内部而言,如果一个组件干了好几件不相关的事情,那么组件内部就比较散,出问题是迟早的事情。中原大战之后,蒋介石表面上统一了各个军阀,实际上,他们内部之间不够内聚,一盘散沙。
低耦合,是针对多个组件之间的关系。老死不相往来,是理想国,也就没有什么矛盾,但这是不可能的。所以,尽量减少类之间的依赖。
Soc
关注分离点,我们经常说mvc模式是关注分离点的。什么意思呢?可以把mvc看成三个大的组件,每个组件都干自己的事情,model专注业务逻辑、view专注页面展示、controller专注控制,把适当的model推给适当的view
二、面向对象设计
面向接口编程
利于扩展
组合优于继承
无论是组合还是继承,都是可以扩展对象的功能。从耦合性上来讲,组合当然优于继承。适配器模式(包装器模式)有两种实现方式
隔离可能改变的部分
把经常变化的部分以抽象的方式隔离起来
SOLID原则
1、单一责任原则 (SRP)
2、开放/封闭原则(OCP)
3、里氏替换原则(LSP)
4、接口分离原则(ISP)
5、依赖反转原则(DIP)
KISS (keep it simple,stupid)
DRY (don't repeat yourself)
三、设计模式
需求和重构
按照oo原则来设计,结果并不一定是某种设计模式,但是可能非常接近某种模式,这时候,可以考虑是否使用模式
四、编写优质软件
可测试性
虚拟对象(虚拟化框架)
仿冒对象
可扩展性
基于接口的设计
插件架构(好的框架都是具有插件的架构,如Asp.net,可通过配置文件注册响应模块和处理器)
可读性
1、注释(包括命名)
2、清晰(代码结构)
3、短的更好
4、一致性