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

PS:引号是书中内容

5.软件构建中的设计

      1)设计中的挑战

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

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

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

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

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

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

      2)关键的设计概念

      软件的首要技术使命:管理复杂度

      理想的设计特征:最小复杂度、易维护、松耦合、可扩展、高扇入低扇出、可移植、精简、层次、标准

      设计的层次:1)软件系统 2)分解为子系统 3)分解为类 4)分解成子程序 5)子程序内部的设计

      3)设计构造块:启发式方法

      寻找现实世界的对象

      形成一致的抽象

      封装实现细节

      在可能的情况下继承

      信息隐藏

      找出容易改变的区域

      保持松散耦合

      探寻通用的设计模式

      4)设计实践

      迭代

      分而治之

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

      建立实验性原型

      合作设计

 

6.可以工作的类

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

      抽象数据类型是指一些数据以及对这些数据所进行的操作的集合”,类还涉及继承和多态这两个概念

      ADT的好处:隐藏实现细节、改动不会影响到整个程序、让接口能提供更多信息、更容易提高性能、让程序的正确性更显而易见、程序更具自我说明性、无须在程序内到处传递数据、可以像在现实世界中那样操作实体,而不用在底层实现上操作它(总结来看,ADT的好处就是封装的好处)

      2)良好的类接口

      好的抽象

      良好的封装

      3)有关设计和实现的问题

      包含(“有一个......”的关系)

      继承(“是一个......”的关系)

      (继承的使用更需要技巧,务必小心使用!)

 

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.伪代码编程过程

      伪代码主要以意图描述为主,不要与编程语言相关,说明思路,后期可以作为注释使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值