《代码大全》
第二章 利用隐喻对编程进行更深刻的理解
2018年 8月 9日 星期四 11时32分07秒 CST
隐喻
通过把一个你所陌生的事物与你所熟识的事物比较
你会对它有进一步的认识,从而形成你对它的独到的深刻理解
这个种隐喻方法被称为 模型化
软件播种:生成系统 Growing a System
软件种植隐喻的弱点是对于软件开发失去了直接控制
在春天播种代码,最后在秋天收获一大堆代码
在软件的开发过程中,对软件的设计、编码的把控,不然收获的就一堆代码了
软件珍珠培植法:系统积累System Accretio
系统积累就是不断的进行增量开发
增量隐喻的力量在于没有过分的作出承诺
不像耕种隐喻那样容易被错误延伸
河蚌育珍珠的联想对理解增量发展法或者积累法有很大的帮助
软件创建:建造软件build software
软件的结构决定软件更改功能付出的代价
实用软件技术:智能工具箱 the intellectual toolbox
就是不断总结开发中的问题抽象成的设计模式
软件创建的先决条件
- 需求分析先决条件
- 结构设计先决条件
- 现在基本上是套用的开发框架
- 选择编程语言先决条件
- 高级的编程语言可以提升效率
- 编程约定
- 可以编写出来高质量的代码
- 改变先决条件适应你的项目
建立子程序的步骤
- 设计程序
- 检查程序
- 子程序代码
- 检查代码
高质量子程序特点
- 对代码的约定,可以参考下阿里的编码约定文档
- 内聚:程序各部分之间的联系程度
- 耦合:程序之间的联系程度
模块化设计
高级结构设计
结构化设计
- 自顶向下分解
- 自底向上合成
生成数据
数据识别
自建数据类型准则
- 建立具有面向功能名称的类型
- 要避免使用含有已定义变量类型的名称
- 就是要见名知意
- 命名规范
数据名称
就是说命名规范
匈牙利命名约定
- 基本类型、一个或多个前缀、一个限定词
短名称
- 使用字母的缩写
第十章 变量
项目大小如何影响创建
项目的进度不是加人就可以解决的,十月怀胎,不是十个人一个月就可以搞定的
程序员应该有自己的开发标准,良好的开发习惯,命名规则,代码质量
软件质量
- 软件的外部特征是用户应了解的软件产品属性
- 内部质量特征
提高软件质量的方法
- 质量管理目标
- 确保质量保证获得
- 测试策略
- 软件工程准则
何时应作质量保证
错误进入软件的时间越早,就不易轻易移除
开发的各个阶段都有可能潜入错误,
应自始至终强调质量保证工作
从一开始应将其作为整个项目计划的一部分
软件质量的一般原则
评审
评审软件质量保证中的地位
评审和其它质量保证方法互补
检查的一般过程
- 计划
- 总揽
- 准备
- 检查会议
- 检查报告
- 再工作
- 执行
- 检查本身
单元测试
测试是最流行的提高质量的方法
单个测试方法
- 单元测试
- 功能测试
- 部分测试
- 系统测试
测试技巧
- 不完全测试
- 测试的艺术在于从所有测试用例中找出最能发现错误的示例来
善于结构的测试
- 对程序中的每一条语句至少测试一次
- 代码覆盖测试、逻辑覆盖测试
数据流测试
- 已定义数据
- 已使用数据
- 已无效的数据
- 等效类划分
错误猜测
边界分析
- 最大值,最小值
- 复合边界
坏数据的排序
- 好的数据排序
80%的错误往往出现在20%的子程序中
50%的错误往往出现在10%的子程序中
错误排序
- 结构错误 25%
- 数据错误 22
- 功能实现错误 16
- 实现错误 9
- 功能需求错误 8
- 测试定义或执行 2
- 系统、软件结构错误 1
- 其它 4
大多数的错误范围是相当有限的
- 许多错误并不是结构性错误
- 大多数实现错误来自程序员
- 书写错误是一个相当普遍的错误源
- 避免赋值语句的错误是质量的关键
- 大多数错误容易改正
- 用错误数度量你所在组的经验
- 错误创建所导致的出错比较
出现的错误的数量随开发过程的质量而异
- 千行代码出现约15到20个错误
- 无尘开发方法大大的降低了代码的错误
- 测试自身的错误
测试支持工具
可以被接受测试的高级子程序调用的低级子程序 这样的子程序称为残桩
- 残桩的功能
- 不需要任何动作就能马上交还控制
- 能输出诊断信息,可能是输入参数的反应
- 能测试反馈给它的数据
- 能从交互式输入中的返回值
- 不论输入如何都能返回一个标准答案
- 可增加分配给实时子程序的时钟周期
- 其功能相当于缓慢、厚实、简单或欠精确的实时子程序
调用正在测试中的伪子程序,称为驱动或者测试工具
- 虚拟文件,和实际文件有着相同的构成
调试
调试的好处
系统集成
集成的过程也被认为是一个测试过程
分段与递增集成
分段集成:
不必考虑工程中各部分建立的先后顺序
所有的部分都是同一时间呗集成
递增集成
集成过程的计划安排直接影响工程建立的计划安排
改进的公布法
改进公布法是一种公布软件的递增方法
在某些方面它的概念比递增集成法更加广泛
它的主要技术功能是递增集成和结构的有序化
集成的计划安排影响程序模块设计、编码和调试的次序,它也影响你是否能顺利的测试、调试他们.
代码调试技术
软件优化
个人性格
软件开发方法的有关问题
读后感
这本书完整的诠释的软件开发过程中的种种细节
从项目的建立、开发过程、以及代码的审计和优化
在项目的开发过程中代码的质量决定程序的效率
良好的编程风格和约定的命名可以大大提高代码的可读性,
减少不必要注释
进行单元测试可约束代码开发边界
也可以很好的进行重构
读完之后对总体的开发有了新的认知
跟实际的开发情况有了不少出入
毕竟现实开发的是工作
离想要的水平相差还很远
加油