代码大全 读书笔记(3)软件构建中的设计

1. 选择编程语言

熟悉的语言

高级的语言

更能表达编程中各种概念的语言

每种语言都有自己的优点和弱点,要知道所选用语言的明确优点和弱点。

问问自己,采用的编程实践是对你所用的编程语言的正确响应,还是受它的控制,记得“深入一种语言去编程”,不要仅“在一种语言上编程”。

有意识的选择最适合你的项目的实践方法。


2. 设计中的而挑战

设计是一个险恶的问题,只有通过解决或者部分解决才能明确问题

设计是个了无章法的过程

设计就是确定取舍和调整顺序的过程

设计受到诸多限制

设计是不确定的

设计是一个启发式过程

设计是自然而然形成的

软件的首要技术使命是管理复杂度,要把任何人在同一时间需要处理的本质(essential)复杂度的量减到最少,不要让偶然性(accidental)的复杂度快速增长


3. 理想的设计特征

最小的复杂度

易于维护

松散耦合

可重用性

高扇入

低扇出

可移植性

精简性

层次性

标准技术


4. 设计的层次

第1层:软件系统,就是整个系统

第2层:分解为子系统或包,确定如何把程序分为主要的子系统,比如说数据库、用户界面、业务规则、命令解释器、报表引擎等。确定不同子系统之间相互通信的规则。为了让系统之间的连接简单且易于维护,就要尽量简化子系统之间的交互关系。最简单的交互关系是让一个子系统去调用另一个子系统中的子程序;稍微复杂一点的交互关系是在一个子系统中包含另一个子系统中的类,最复杂的交互关系是让一个子系统中的类继承自另一个子系统中的类。

第3层:分解为类, 确定好类的接口,把所有的子系统进行适当的分解,确保所分解出的细节恰到好处,能够用单个类实现。

第4层:分解成子程序,把每个类细分为子程序。

第5层:子程序内部的设计,包括编写伪代码、选择算法、组织子程序内部的代码块等。


5. 设计构造块:启发式方法

5.1 找出现实世界中的对象

确定设计方案时,最流行的一种常规做法就是面向对象设计方法,要点是辨识现实世界中的对象以及人造的对象。

设计步骤:

辨识对象机器属性(method)和数据(data)

确定可以对各个对象进行的操作

确定各个对象能对其它对象进行的操作

确定对象的哪些部分对其它对象可见----哪些部分是public的,哪些部分是private的

定义每个对象的公开接口(public interface)


猜你喜欢

转载自blog.csdn.net/bai00/article/details/78337133
今日推荐