代码大全2 读书笔记(一)
软件构建中的设计(第5章)
高质量的设计常见的特征
1 最小的复杂程度:设计的首要目的就是要让复杂度最小;避免作出 ‘聪明的’ 设计,因为 ‘聪明的’ 设计常常都是难以理解的;应当作出简单而且易于理解的设计。
2 易于维护:设计时为做维护工作的程序员着想。
3 松散耦合:设计时让程序的各个组成部分之间关联最小。通过应用类接口中的合理抽象,封装性以及信息隐藏等原则,设计出相互关联尽可能最少的类。减少关联也就减少了集成,测试与维护的工作量。
4 可扩展性:改动系统的某一部分而不影响其他部分。
5 可重用性:设计的系统的组成部分能在其他系统中重复使用。
6 高扇入:让大量的类使用某个给定的类,这意味着设计出的系统很好的利用了在较低层次上的工具类(utility classes)。
7 低扇出:让一个类少量的或适中的使用其他类。
8 可移植性:设计的系统能很方便的移植到其他环境中去。
9 精简性:设计出来的系统没有多余的部分。
10 层次性:保持系统各个分解层的层次性。书中的例子:假如编写一个新系统,其中用到很多设计不佳的旧代码,这时候应该为新系统编写一个负责同旧代码交互的层,设计这层时,要让它能影藏旧代码的低劣质量,同时为新的层次提供一组一致的服务,这样你的系统的其他部分就只有新的层打交道,无需同旧代码进行交互。层次化设计的好处:1把低劣的代码隐藏起来 ;2若果最终抛弃旧代码或者重构,就不必修改除交互层之外的任何新代码。
11 标准技术:一个系统所依赖的外来的,古怪的东西越多,别人就越难理解,尽量使用标准化的,常用的方法,让整个系统给人熟悉的感觉。
设计的层次
表驱动法
表驱动法是一种 编程模式(scheme)----------- 从表里面查找信息而不是使用逻辑语句(if 和 case)。凡是能通过逻辑语句来选择的事物,都可以通过查表来选择。
使用表驱动法的两个问题
1 怎样从表中查询条目
①直接访问
简单粗暴的方法表驱动法的做法
直接访问②索引访问
③阶梯访问
2 在表里存什么