软件构造——《代码大全》1-4章读书笔记

开发软件的过程

  1. 定义问题
  2. 需求分析
  3. 规划构建
  4. 软件架构(高层设计)
  5. 详细设计
  6. 编码与调试
  7. 单元测试
  8. 集成测试
  9. 集成
  10. 系统测试
  11. 保障维护
    虽然以上每个方面都会影响到软件的质量、开发者的生产率,但是个人感觉“软件架构”的好坏会对以上两个问题产生较大的影响。但是,现实中个人写程序,往往会跳过需求和设计的阶段直接跳入构建阶段,而这个过程的缺失会带来更大的工作量。

前期准备

构建活动是软件项目的中间阶段,开始构建的时候,项目前期工作已经为软件的成败打下了基础。在构建过程中,如果发现了失败的苗头,就应该重新返回到项目的前期工作中。在前期准备中,需要明确“这个系统应该做什么”和“它该如何做到这些”。
架构需要详细定义所用到的主要的类,他应该之处每个主要的类的责任,以及该类如何与其他类交互,他应该包含对类的继承体系、状态转换、对象持久化等的描述。如果系统足够大,它应该描述如何将这些类组织成一个个子系统。
架构应该描述所用到的主要文件和数据表的设计。同时应该描述曾经考虑过的其他方案,并说明做出该选择的理由。
书中介绍了架构过程中需要解决的若干问题,现阶段我们需要考虑的有:错误处理,具体内容见下:(个人感觉在写程序之前,首先思考以下问题,会使得程序的错误处理层次更加清晰)

  1. 错误处理是进行纠正还是仅仅检测?如果是纠正,程序应该尝试从错误中恢复出来,如果仅仅是检测,程序继续运行。但是这两种处理方式都应该通知用户检测到一个错误。
  2. 错误检测是主动地还是被动地?主动检测,例如:通过检查用户输入的有效性来进行错误检测,被动检测,即错误导致的错误已经使程序无法继续执行时才被动地响应该错误。
  3. 程序如何传播错误?程序检测到错误的时候,可以立即丢弃引发错误的数据;也可以将这个错误当成一个错误,并且进入错误处理状态;可以等到所有处理完成之后,再通知用户在某个地方发现了错误。
  4. 错误消息的处理有什么约定?架构应该有一个详细定义的一致的处理策略。
  5. 如何处理异常?架构应该规定diamante何时能够抛出异常,在什么地方捕获异常,如何记录这些异常,以及在文档中描述异常。
  6. 在程序中什么层次上处理错误?可以在发现错误的地方处理,或者将错误传递到专门处理错误的类进行处理,或者沿着函数调用链往上传递错误。(如果没有定义好处理错误的层次,可能导致多次处理一个相同的错误,导致代码浪费或者导致一个错误没有经过处理,从而导致意料之外的错误)。
  7. 每个类在验证其输入数据的有效性方面需要附有什么责任?是每个类负责验证自己的数据的有效性还是有一组负责验证整个系统的数据的有效性?
  8. 是希望使用运行环境中内建的错误处理机制,还是想建立自己的一套机制?有时候,运行环境中拥有的某种特定的错误处理方法,不一定是符合自己需求的最佳方法。

关键的“构建”决策

选择编程语言

一般来说,使用高级语言比使用低级语言生产效率高,使用熟悉的语言比使用陌生的语言生产效率高。编程语言会影响程序员的思维,所以要选择一门合适的语言。

编程约定

统一规则,使得整个程序的各个部分风格近似,避免没有必要的工作。

总结

该书第一部分讲述讲述的是在软件构造中开始写代码之前的准备工作,但是诸如需求分析等不是《软件构造》中的重点,也不是本书中的重点,关于架构,本书介绍了一些在架构中需要解决的问题,都是宏观的各个方面,个人感觉在现阶段无法在实践中中真正的去考虑那些内容,但是有关错误处理的问题,却在编程实践中真正遇到了,做了简单记录。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值