良好设计五大要素(同等重要,没有优先级之分)
1. 对需求的完美实现:
完美的意思是:完全实现确定需求,对潜在需求有一个恰到好处的粒度的实现
2. 高内聚,低耦合:
a. 良好的,符合对象本质的模块划分
b. 使用最匹配的设计模式
3. 符合Kiss原则:
a. 奥卡姆剃须刀:用最少的模块,类,以及代码段实现
b. 模块,类,接口定义易于理解, 易于掌握和学习, 无歧义性
c. 容易维护
4. 高度灵活,良好的可扩展性
5. (运行时)尽可能高的性能
非良好设计的要素
除了以上的要素的相反面, 要再定义好的设计要素很难,不过什么是不好,我们很容易看出来:有臭味的代码,就是不好的设计. 什么样的代码有臭味?不够简单的代码, 就是有臭味,那,什么样的代码不够简单:
1. 难修改的代码:
a. 要修改自己, 先要去跑好几个其他地方,修改其他的代码;
b. 自己的代码改不动,
2. 脆弱的代码: 修改后,自己都不知道,并且已经在好多地方出现隐性的bug
3. 不够简单的代码:这里的不够简单,指没有用最少的代码行进行实现
4. 冗余的代码:功能重复,却有好几个不同名的接口
5. 难懂的代码:只有自己才看得明白,甚至自己过后都看不明白
难点在于:
1. 恰到好处的潜在需求实现, 对"恰到好处"的把握并不容易
2. 怎样才是高内聚,低耦合,100个人有101种理解
3. 要做到使用最少的代码进行实现, 在实际情况中不容易
4. 怎样才算好的可扩展性, 很难定义
5. 实现的同时就兼顾到高性能, 不是一件容易的事;如果事后还有时间去进行不同方案的性能比较,就更不容易