您的位置:首页 > 编程语言

代码大全第二版读书笔记 第二部分-创建高质量的代码 五、软件构建中的设计

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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  代码笔记