《代码大全》了解一下

《代码大全》

第二章 利用隐喻对编程进行更深刻的理解

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个错误
  • 无尘开发方法大大的降低了代码的错误
  • 测试自身的错误

测试支持工具

  • 可以被接受测试的高级子程序调用的低级子程序 这样的子程序称为残桩

    • 残桩的功能
    • 不需要任何动作就能马上交还控制
    • 能输出诊断信息,可能是输入参数的反应
    • 能测试反馈给它的数据
    • 能从交互式输入中的返回值
    • 不论输入如何都能返回一个标准答案
    • 可增加分配给实时子程序的时钟周期
    • 其功能相当于缓慢、厚实、简单或欠精确的实时子程序
  • 调用正在测试中的伪子程序,称为驱动或者测试工具

  • 虚拟文件,和实际文件有着相同的构成

调试

调试的好处

系统集成

集成的过程也被认为是一个测试过程

分段与递增集成

分段集成:
不必考虑工程中各部分建立的先后顺序
所有的部分都是同一时间呗集成

递增集成
集成过程的计划安排直接影响工程建立的计划安排

改进的公布法

改进公布法是一种公布软件的递增方法
在某些方面它的概念比递增集成法更加广泛
它的主要技术功能是递增集成和结构的有序化

集成的计划安排影响程序模块设计、编码和调试的次序,它也影响你是否能顺利的测试、调试他们.

代码调试技术

软件优化

个人性格

软件开发方法的有关问题

读后感
这本书完整的诠释的软件开发过程中的种种细节
从项目的建立、开发过程、以及代码的审计和优化

在项目的开发过程中代码的质量决定程序的效率

良好的编程风格和约定的命名可以大大提高代码的可读性,
减少不必要注释

进行单元测试可约束代码开发边界
也可以很好的进行重构

读完之后对总体的开发有了新的认知
跟实际的开发情况有了不少出入
毕竟现实开发的是工作

离想要的水平相差还很远
加油

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值