读书笔记:《代码大全第2版》 01.打好基础
文章目录
前言
精华部分:6、7、10~19
初级:先看18
高级:先看4
P M:先看33
低年级学生:先看11
高年级学生:先看8
制定编码标准:先看32
自学编程:先看7
喜欢网上争论:先看13.3和17.3
理解软件开发
软件开发经历
- 定义问题(构建前)
- 需求分析(构建前)
- 规划构建(构建前)
- 软件架构或高层架构(构建前)
- 详细设计(构建中)
- 编码与调试(构建中,核心)
- 单元测试(构建中,核心)
- 集成测试(构建中,核心)
- 集成(构建中)
- 系统测试(构建后)
- 保障维护
很多项目,程序员得到的唯一文档就是源代码本身。需求规格书和设计文档可能过时,但是源代码是最新的
因为时间原因,需求可能是临时的,测试可能是不充分的,但是代码是必须编码完成的。
建筑过程与软件工程
通过隐喻,可以将软件的构建过程比作房屋的建设过程。
首先你要决定准备建一个什么类型的房子(问题定义);
然后你必须和某个建造师探讨这一总体设计,并达到批准(软件架构设计);
随后你画出详细的蓝图,雇一个承包人(详细设计);
接下来你要准备好建造地点,打好地基,搭建房屋框架,砌好边墙,盖好房顶,通好水电煤气等(软件构建);
最后在房子大部分完成之后,庭院设计师、油漆匠、装修工会对你的新家进行美化(软件优化);
在整个过程中,还会有各种监察人员来检查工地、地基、框架、布线等其他需要检查的地方(评审和详查)。
可以发现,仔细的准备是必要的,大型项目和小型项目之间也是有差异的。
前期准备
前期准备的意义
就像修建建筑物一样,项目的成败很大程度上在构建开始之前就已经注定了。如果地基没打好或者计划不充分,在构建开始前能做的无非就是尽量让损害最小罢了。
前期准备的目标是为了降低风险,一个好的项目规划者能够尽可能早地将主要的风险清除掉,以使项目的大部分工作能够尽可能平稳地进行。
在开始动手做系统前,先好好思考打算如何去做,最容易修改的代码是还没有开始的代码。
前期准备的工作
明确软件类型
明确所从事的软件的类型,并对所用的开发方法做出相应的裁剪。因为建设大厦和搭建狗舍的前期准备肯定不一样
问题定义
- 站着客户的角度,用客户的语言来描述问题,并不涉及具体的解决方式
- 问题定义是软件开发的起始,一旦方向错了,后续的努力都是浪费
需求分析
- 明确的需求有助于确保用户驾驭系统的功能
- 充分详尽地需求描述是项目成功的关键
架构设计
- 系统架构的质量决定了系统的最终质量
前期准备工作不周全的原因
- 绝大多数开发人员没有需求、产品方面的经验和训练
- 程序员无法抵御"尽快开始编码"的欲望
- 管理者对准备工作的重要性不理解
在构建期间处理需求变更
- 对比需求核对表评估需求的质量
- 确保每一个人都知道需求变更的代价
- 建立一套变更控制程序
- 使用能适应变更的开发方法
- 放弃这个项目(需求糟糕不稳定,以上都不奏效)
- 注意这个需求有没有商业价值