- 博客(20)
- 收藏
- 关注
转载 第二十四章 重构
重构简介 重构定义: 在不改变软件外部行为的前提下,对其内部结构进行改变,使之更容易理解以便于修改; 尽可能地将一个程序分解为多个组成部分。 重构的理由 代码重复; 冗长的子程序; 循环过长或嵌套过深; 类的接口未能提供层次一致的抽象; 拥有太多参数的参数列表; 类的内部修改往往被局限于某个部分; 变化导致对多个类的相同修改; 对继承体系的同样修改; case语句需要做相同的修改;...
2019-09-22 20:37:00
140
转载 第二十三章 调试
调试时确定错误根本原因并纠正此错误的过程。 调试概述 让你有所收获的软件缺陷 理解你正在编写的程序; 明确你犯了哪种类型的错误; 从代码的阅读者的角度分析代码质量; 审视自己解决问题的方法; 审视自己修正缺陷的方法; 寻找缺陷 科学的调试方法在运用经典的科学调试方法时,你会经历如下步骤: 通过可重复的试验收集数据; 根据相关数据的统计构造一个假说; 设计一个实验来证明或反证则会个假...
2019-09-22 16:09:00
221
转载 第二十二章 开发者测试
单元测试是将一个程序员或者一个开发团队所编写的,一个完整的类、子程序或者小程序,从完整的系统中隔离出来进行测试; 组件测试是将一个类、包、小程序或者其他编程元素,熊一个更加完整的系统中隔离出来进行测试,这些测试代码涉及到多个程序员或者多个团队; 集成测试是对两个或更多的类、包、组件或者子系统进行的联合测试,这些组件由多个程序员或者开发团队所创建。这种测试通常在有了两个可以进行测试的类的...
2019-09-21 23:36:00
567
转载 第二十一章 协同构造
协同开发实践概要 协同构建包括结对编程、正式检查、非正式技术复查、文档阅读,以及让其他开发人员共同承担创建代码及其他工作产品责任的技术。 协同构建是其他质量保证技术的补充; 协同构建有利于传授公司文化以及编程专业知识; 集体所有权适用于所有形式的协同构建; 在构建前后都应保持协作。 结对编程 成功运用结对编程的关键 用编码规范来支持结对编程; 不要让结对编程变成旁观; 不要强迫在简...
2019-09-21 14:09:00
133
转载 第二十章 软件质量概述
本章从构建的角度来审视保障软件质量的技术。 软件质量的特性 正确性; 可用性; 效率; 可靠性; 完整性; 适应性; 精确性; 健壮性; 可维护性; 灵活性; 可以执行; 可重用性; 可读性; 可测试性; 可理解性 改善软件质量的技术 软件质量目标; 明确定义质量保证工作; 测试策略; 软件工程指南; 非正式技术复查; 正式技术复查; 外部审查。 开发过程 对变更进行控制的过程...
2019-09-21 12:47:00
188
转载 第十九章 一般控制问题
布尔表达式 用ture和false做布尔判断; 隐式地比较布尔值与true和false; 简化复杂的表达式; 拆分复杂的判断并引入新的布尔变量; 把复杂的表达式做成布尔函数; 用决策代替复杂的条件; 编写肯定性质的布尔表达式; 在if语句中,把判断条件从否定形式转换为肯定形式,并且互换if和else子句中的代码; 用狄摩根定理简化否定的布尔判断; 用括号使布尔表达式更清晰;...
2019-09-21 12:47:00
126
转载 第十八章 表驱动法
表驱动法是一种编程模式——从表里面查找信息而不使用逻辑语句(if和case)。 表驱动法使用总则 在适当的环境下,采用表驱动法,所生成的代码会比复杂的逻辑代码更简单、更容易修改,而且效率更高。 使用表驱动法的两个问题 使用表驱动法必须先解决两个问题。首先,你必须要回答怎样从表中查询条目的问题。其次是考虑在表中存些什么。 直接访问表 和所有的查询表一样,直接访问表代替了更为复杂的逻辑控制结...
2019-09-18 18:40:00
93
转载 第十七章 不常见的控制结构
子程序中的多处返回 程序可以通过return和exit这类控制结构,在任何需要的时候退出子程序。 如果能增强可读性,那么就使用return; 用防卫子句(早返回或早退出)来简化复杂的错误处理; 减少每个子程序中return的数量。 递归 在递归里面,一个子程序自己负责解决某个问题的一小部分,它还把问题分解成许多的小块,然后调用自己来分别解决每一小块。 使用递归的技巧 确认递归能够停...
2019-09-18 18:40:00
113
转载 第十六章 控制循环
选择循环的种类 在大多数语言中,你只能用到少数几个循环: 计数循环执行的次数是一定的,可能是针对每位雇员执行一次; 连续求值的循环预先并不知道将要执行多少次,它会在每次迭代时检查是否应该结束; 无限循环一旦启动就会一直执行下去; 迭代器循环对容器内的每个元素执行一次操作。 什么时候使用while循环 如果你预先并不知道循环要迭代多少次,那么就使用while循环。 检测位于循环的开始...
2019-09-18 13:20:00
111
转载 第十五章 使用条件语句
条件语句用于控制其它语句是否执行 if语句 简单if-then语句 在写if语句的时候请遵循下述指导原则: 首先写正常代码路径,再处理不常见情况; 确保对于等量的分支是正确的; 把正常情况的处理凡在if后面而不要放在else后面; 让if子句后面跟随一个有意义的语句; 考虑else子句; 测试else子句的正确性; 检查if和else子句是不是弄反了。 if-then-else语句串...
2019-09-17 17:18:00
100
转载 第十四章 组织直线型代码
必须有明确顺序的语句 如果语句之间存在依赖关系,并且这些关系要求你把语句按照一定的顺序加以排列,那么请设法使得这些关系变得明显。 设法组织代码,使依赖关系变得非常明显; 使子程序名能凸显依赖关系; 利用子程序参数明确显示依赖关系; 用注释对不清晰的依赖关系进行说明; 用断言或者错误处理代码来检查依赖关系。 顺序无关的语句 使代码易于自上而下地阅读; 把相关语句组织在一起。 核对表...
2019-09-17 15:36:00
110
转载 第十三章 不常见的数据类型
结构体 使用结构体的理由: 用结构体来明确数据关系; 用结构体简化对数据块的操作; 用结构体来简化参数列表; 用结构体来减少维护。 指针 使用指针的一般技巧 正确地使用指针要求程序员采用一种双向策略。第一,要首先避免造成指针错误;第二,在编写代码之后尽快检测出指针错误。 把指针操作限制在子程序或类里面; 同时声明和定义指针; 在与指针分配相同的作用域中删除指针; 在使用指针之前删除...
2019-09-16 17:45:00
155
转载 第十二章 基本数据类型
数值概论 下面一些建议能够使你在使用数的时候少犯错误。 避免使用神秘数值 修改会变得更可靠; 修改会变得更容易; 你的代码变得更可读。 如果需要可以使用硬编码的0和1; 预防除零错误; 使类型转换变得明显; 避免混合类型的比较; 注意编译器的警告。 整数 在用整数的时候,要注意下面的注意事项。 检查整数除法; 检查整数溢出; 检查中间结果溢出。 浮点数 使用浮点数应遵循的原则...
2019-09-14 22:20:00
118
转载 第十一章 变量名的力量
选择好变量名的注意事项 一个好的变量名是可读的、易记得得和恰如其分的。 最重要的命名注意事项 最重要的考虑事项是,该名字要完全、准确地描述出该变量所代表的事物。通常,对变量的描述就是最佳的变量名。 以问题为导向 一个好记的名字反映的通常是问题,而不是解决方案。 最适当的名字长度 当变量名的平均长度在10到16个字符的时候,调试程序所需花费的力气是最小的。平均名字长度在8到20个字符的程序...
2019-09-13 19:00:00
171
转载 第十章 使用变量的一般事项
本章中用“变量”一词同时指代对象和内置数据类型,如整数和数组等。“数据类型”一词通常指内置数据类型,而“数据”一词则可能代表对象,也可能代表内置数据类型。 数据认知 创建有效数据的第一步是了解所要创建的数据种类。积累大量的数据类型对于程序员来说至关重要。 有关数据类型的更多资源 Cormen《Introduction to Algorithm》 Sedge wick《Algorithm ...
2019-09-13 12:06:00
159
转载 第九章 伪代码编程过程
本章从微观上关注编程过程——也就是关注创建单独的类及其子程序的特定步骤。本章还将讲述伪代码编程过程,这种编程有助于减少设计和编写文档所需的工作量,同时提高这两项的工作质量。 创建类和子程序的步骤概述 先对一个类做总体设计,列出这个类内部的特定子程序,创建这些子程序,然后从整体上复查这个类的创建结果。 创建一个类的步骤 创建一个类的关键步骤如下: 创建类的总体设计; 创建类中的子程序;...
2019-09-12 16:39:00
612
转载 第八章 防御式编程
防御式编程的主要思想是:子程序应该不因传入错误数据而被破坏,哪怕是由其他子程序产生的错误数据。更一般地说,其核心思想是要承认程序会有问题,都需要被修改,聪明的程序员应该根据这一点来编程序。 保护程序免遭非法输入数据的破坏 通常有三种方法来处理进来垃圾数据: 检查所有来源于外部数据的值; 检查所有子程序输入参数的值; 决定如何处理错误的输入参数。 断言 断言是指在开发期间使用的、让程序...
2019-09-12 14:15:00
233
转载 JMeter简介
JMeter是Apache组织开发的基于Java的压力测试工具。它可以用于测试静态和动态资源,可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。 JMeter下载地址https://jmeter.apache.org/download_jmeter.cgi 下载完毕后解压到任意文件夹,打开apache-jmeter-5.1.1\bin\Apa...
2019-09-11 13:41:00
169
转载 第七章 高质量的子程序
子程序是为实现一个特定的目的而编写的一个可被调用的方法(method)或过程(procedure)。 创建子程序的正当理由 这里列出一些创建子程序的正当理由: 降低复杂度 引入中间、易懂的抽象 避免代码重复 支持子类化 隐藏顺序 隐藏指针操作 提高可移植性 简化复杂的布尔判断 改善性能 除此之外,创建类的很多理由也是创建子程序的理由 隔离复杂度 隐藏实现细节 限制变化所带来的影响 ...
2019-09-11 10:17:00
178
转载 第六章 可以工作的类
类是由一组数据和子程序构成的集合,这些数据和子程序共同拥有一组内聚的、明确定义的职责。 类的基础:抽象数据类型(ADT) 抽象数据类型是指一些数据以及对这些数据所进行的操作的集合。 使用ADT的益处:可以隐藏实现细节、改动不会影响到整个程序、让接口提供更多信息、更容易提高性能、让程序的正确性更显而易见、程序更具自我说明性、无需在程序内到处传递数据、可以像在现实世界中那样操作实体,而不用在...
2019-09-11 10:15:00
103
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人