代码大全第二版读书笔记 第二部分-创建高质量的代码 五、软件构建中的设计
2015-01-28 23:43
253 查看
软件构建中的设计(P73)
软件开发需要设计,如同建设楼房一般,只有画好草图,才知道下一步改怎么做1.设计面临的问题
软件设计不是一个简单的问题,其中面临着诸多挑战。对其描述有:(P74)险恶
了无章法
是一个确定取舍和调整顺序的过程
应当受到诸多限制
多种方法的
启发式的(经验堆积的,而且充满了很多“试试没准行”的特点)
自然而然发展而成
2.关键的设计概念
1)复杂度(P77)管理复杂度是软件开发中最为重要的技术话题。在我看来,软件的首要技术使命便是管理复杂度,它实在是太重要了。
2)理想的设计特征(P80)
最小的复杂度、易于维护、松散耦合、可拓展性、可重复使用性、高扇入、低扇出、可移植性、精简性(加进来后会损害什么呢)、层次性、标准化(易懂)
3)设计的层次(P82)
软件系统
分解为子系统或包
特别需要注意的是,不同子系统不应该拥有相互通信的能力,且设计应该是无环图
分解包中的类
分解为类中的数据和子程序
隐藏信息等工作
子程序内部
编写伪代码、选择算法、组织子程序内部代码块
3.设计构造块:启发式方法
1)寻找现实世界的对象(P87)辨识对象及其属性
确定可以对各个对象进行的操作
确定各个对象能对其他对象进行的操作
确定对象的哪些部分对其他对象可见
定义每个对象的公开接口
2)形成一致的抽象(P89)
用一种简化的观点来考虑复杂的概念
3)封装实现细节(P90)
不只是让你能用简化的视图来看复杂的概念,同时还不能让你看到复杂概念的任何细节。
4)当继承能简化设计时就继承(P91)
对大同小异的对象继承实现,简化编程
5)藏住秘密(信息隐藏)(P92)
好的类接口就像是冰山的尖儿一样,让类的大部分都不会暴露出来——只能看到水上的1/8
问题1:“这个类需要隐藏些什么?”
问题2:“我该隐藏些什么?”
6)找出容易改变的区域(P97)
适应可能变化的区域,找出并隔离
7)保持松散耦合(P100)
8)通用的设计模式(103)
Abstract Factory
Adapter
Bridge
Composite
Decorator
Facade
Factory Method
Iterator
Observer
Singleton
Strategy
Template Method
4.设计实践
1)迭代(P110)设计师一种迭代过程。你并非只能从A点进行到B点,而是可以从A点到达B点,再从B点返回到A点
2)分而治之(P111)
把程序分解为不同的关注区域,然后分别处理每一个区域。如果碰上了死胡同,那么就迭代
3)自上而下和自下而上的设计方法(P111)
自上而下——从抽象到具体,以大化小
自下而上——从细节到整体,紧凑合理的系统,新系统的设计
相互协作,反复试验
4)建立实验性原型(P114)
针对“险恶”的情况,是一种“写出用于回答特定设计问题的、量最少且能够随时扔掉的代码”
用prototype前缀标注,用于提醒后期拓展
5)合作设计(P115)
6)记录你的设计成果(P117)
相关文章推荐
- 代码大全第二版读书笔记 第二部分-创建高质量的代码 八、防御式编程
- 代码大全第二版读书笔记 第二部分-创建高质量的代码 九、伪代码编程过程
- 代码大全第二版读书笔记 第二部分-创建高质量的代码 七、高质量的子程序
- 代码大全_第二部分: 创建高质量的代码
- 代码大全第二版读书笔记 第二部分-创建高质量的代码 六、可以工作的类
- 代码大全第二版读书笔记 第四部分-语句 十六、控制循环
- [读书笔记-代码大全]第1章 欢迎进入软件构建的世界
- 【代码大全】第5章 软件构建中的设计
- 代码大全第二版读书笔记 第四部分-语句 十七、不常见的控制结构
- 读书笔记-代码大全-第一章软件构建
- 代码大全2-软件构建中的设计
- 代码大全第二版读书笔记 第三部分-变量 十、使用变量的一般事项
- 代码大全2-软件构建中的设计
- 代码大全--软件构建中的设计
- 代码大全(五)-- 软件构建中的设计
- 软件创建的先决条件(代码大全 第三章)
- 【代码大全】第1章 欢迎进入软件构建的世界
- 【读书笔记】代码大全34章:软件工艺主题
- 《Effective C++》读书笔记(六) 设计与声明(第二部分)
- 《Pro Ogre 3D Programming》 读书笔记 之 第三章 设计概要 第二部分