《代码大全》了解一下

《代码大全》

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

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

测试支持工具

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

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

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

调试

调试的好处

系统集成

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

分段与递增集成

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

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

改进的公布法

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

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

代码调试技术

软件优化

个人性格

软件开发方法的有关问题

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

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

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

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

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

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

猜你喜欢

转载自blog.csdn.net/java_sparrow/article/details/81589866
今日推荐