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

阅读《代码大全》后的读书笔记(第二部分)

2015-10-08 19:03 176 查看
PS:引号是书中内容

5.软件构建中的设计

1)设计中的挑战

设计是一个险恶的问题:这个问题只有在“解决”过一次后才能明确定义它,然后再次解决它;(书中的例子很有趣)

设计是个了无章法的过程:采取很多方法,好的,坏的,对的,错的;

设计就是确定取舍和调整顺序的过程:平衡各项需求;

设计受到诸多限制:时间,空间;

设计是不确定的:条条大路通罗马;

设计是一个启发式过程:试一试,也许可行?

2)关键的设计概念
软件的首要技术使命:管理复杂度
理想的设计特征:最小复杂度、易维护、松耦合、可扩展、高扇入低扇出、可移植、精简、层次、标准
设计的层次:1)软件系统 2)分解为子系统 3)分解为类 4)分解成子程序 5)子程序内部的设计
3)设计构造块:启发式方法
寻找现实世界的对象
形成一致的抽象
封装实现细节
在可能的情况下继承
信息隐藏
找出容易改变的区域
保持松散耦合
探寻通用的设计模式
4)设计实践
迭代

分而治之

自上而下和自下而上的设计方法

建立实验性原型

合作设计

6.可以工作的类

1)类的基础:抽象数据类型,ADT

“抽象数据类型是指一些数据以及对这些数据所进行的操作的集合”,类还涉及继承和多态这两个概念
ADT的好处:隐藏实现细节、改动不会影响到整个程序、让接口能提供更多信息、更容易提高性能、让程序的正确性更显而易见、程序更具自我说明性、无须在程序内到处传递数据、可以像在现实世界中那样操作实体,而不用在底层实现上操作它(总结来看,ADT的好处就是封装的好处)
[b]
2)良好的类接口
[/b]
好的抽象
良好的封装
[b]
3)有关设计和实现的问题
[/b]
[b]
包含(“有一个......”的关系)
[/b]
继承(“是一个......”的关系)
继承的使用更需要技巧,务必小心使用!)

7.高质量的子程序

子程序名使用常见的对仗词组:
add/remove increment/decrement open/close
begin/end insert/delete show/hide
create/destroy lock/unlock source/target
first/last min/max start/stop
get/put next/previous up/down
get/set old/new
“理论上认为子程序最佳最大长度通常是一屏代码或打印出来一到两页的代码,也就是约50~150行代码”

8.防御式编程

“处理错误最恰当的方式要根据出现错误的软件类别而定”
大致上: 1)人身安全攸关的软件往往更倾向于正确性而非健壮性,如放射线治疗仪
2)消费类应用软件往往更注重健壮性而非正确性,如文字处理软件

9.伪代码编程过程

伪代码主要以意图描述为主,不要与编程语言相关,说明思路,后期可以作为注释使用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: