没有合适的资源?快使用搜索试试~ 我知道了~
第五部分 软件编码、测试与质量保障1
需积分: 0 0 下载量 145 浏览量
2022-08-03
16:43:56
上传
评论
收藏 2.12MB PDF 举报
温馨提示
试读
21页
1. 不要编写需要外部档持的代码,这样的代码是脆弱的,要确保你的代码本读起来就很清晰 2. 学会只编写够的注释,过犹不及,重视质量不是数量 3. 函数编写的第条
资源详情
资源评论
资源推荐
软件编程
1 良好的编程实践
软件编程是⼀个复杂⽽迭代的过程,它不仅仅是编写代码,还应该包括代码审查、单元测试、代码优化、集成调试
等⼀系列⼯作。
软件编码是⼀个复杂⽽迭代的过程,包括程序设计 (program design) 和程序实现 (program implementation)。
软件编码要求:
正确的理解⽤户需求和软件设计思想
正确的根据设计模型进⾏程序设计
正确⽽⾼效率的编写和测试源代码
软件编码是设计的继续,会影响软件质量和可维护性。
软件编码规范是与特定语⾔相关的描写如何编写代码的规则集合。
良好的编程实践:
1. 不要编写需要外部⽂档⽀持的代码,这样的代码是脆弱的,要确保你的代码本⾝读起来就很清晰。
编写⾃⽂档化的代码。
2. 学会只编写够⽤的注释,过犹不及,重视质量⽽不是数量。应该把时间花在编写不需要⼤量注释⽀持的代码
上,即让代码⾃⽂档化。
3. 函数编写的第⼀条规则是短⼩,第⼆条规则是更短⼩。函数应该做⼀件事,做好这件事,并且只做这件事。
4. 浮点运算——准确度、精度
代码分析工具:
(Python) Pylint
(Java) Checkstyle
(Java) FindBugs
(Java) PMD
(Java) Jtest
(C) Lint
(Java Script) JSHint
(CSS) CSSLint
(HTML) HTMLHint
2 代码审查
2 代码审查
代码审查 (Code Review) 是⼀种⽤来确认⽅案设计和代码实现的质量保证机制,它通过阅读代码来检查源代码与编
码规范的符合性以及代码的质量。
代码审查的作⽤:
检查设计的合理性
互为 Backup
分享知识、设计、技术
增加代码可读性
处理代码中的“地雷区”
缺陷检查表:见 ppt。
3 代码重构
重构 (Refactoring) 是对软件内部结构的⼀种调整,其⽬的是在不改变软件功能和外部⾏为的前提下,提⾼其可理
解性、可扩展性和可重⽤性。
什么时候不适合重构:
代码太混乱,设计完全错误
与其重构不如重新开始。
明天是 Deadline
永远不要做 Last-Minute-Change;应推迟重构但不可忽略,即使进⼊ Production 的代码都正确地运⾏。
重构的⼯作量显著地影响估算
⼀个任务的估算时间是 3 天,如果为了重构,就需要更多的时间。
推迟重构但不忽略,可以把重构作为⼀个新任务,或者安排在重构的迭代周期中完成。
对比——重构与添加新功能:重构不再添加功能,只管改进程序结构;添加新功能时不应该修改既有代码,只管添
加新功能;重构与添加新功能可交替进⾏。
代码的坏味道:
重复的代码
症状:两个代码段⼏乎相同/拥有⼏乎相同的作⽤
措施:
– 抽取⽅法
– 抽取类
– 替换算法
过长的函数
症状:⼀个⽅法超过 N (如 10) ⾏代码(长度是⼀个警告信号,并不表⽰⼀定有问题)
措施:
– 抽取⽅法
– 每当需要⽤注释说明点什么时,就把需要说明的东西写进⼀个独⽴⽅法中
– 以其⽤途(⽽⾮实现⽅法)对抽取的⽅法命名
说明:对于现代开发⼯具,⽅法调⽤增多不会影响性能,但长⽅法难以理解。
发散式变化
症状:某个类因为不同的原因在不同的⽅向上发⽣变化
措施:
– 如果类既要找到对象,又要对其做某些处理,则让调⽤者查找对象,并将该对象传⼊,或者让类返回
调⽤者所⽤的值
– 采⽤抽取类的⽅法,为不同的决策抽取不同的类
– 如果多个类共享相同类型的决策,则可以合并这些新类,⾄少这些类可以构成⼀层
说明:发散式变化指的是“⼀个类受多个外界变化的影响”,其基本思想是把相对不变的和相对变化相隔离,
即封装变化。
霰弹式修改
症状:发⽣⼀次改变时,需要修改多个类的多个地⽅
措施:
– 找出⼀个应对这些修改负责的类,这可能是⼀个现有的类,也可能需要通过抽取类来创建⼀个新类
– 使⽤移动字段和移动⽅法等措施将功能置于所选的类中,如果未选中类⾜够简单,则可以使⽤内联类
将该类除去
说明:霰弹式修改指的是“⼀种变化引发多个类的修改”,其基本思想是将变化率和变化内容相似的状态和⾏
为放在同⼀个类中,即集中变化。
数据泥团
症状:
– 同样的两⾄三项数据频繁地⼀起出现在类和参数表中
– 代码声明了某些字段,并声明了处理这些字段的⽅法,然后又声明了更多的字段和更多的⽅法,如此
继续
– 各组字段名以类似的⼦串开头或结束
措施:
– 如果项是类中的字段,则使⽤抽取类将其取⾄⼀个新类中
– 如果值共同出现在⽅法的签名中,则使⽤引⼊参数对象的重构⽅法以抽取新对象
– 查看这些项的使⽤:通常可以利⽤移动⽅法等重构技术,从⽽将这些使⽤移⾄新的对象中
纯稚的数据类
症状:类仅由字段构成,或者只有简单的赋值⽅法和取值⽅法构成。
措施:
– 采⽤封装字段阻⽌对字段直接访问(仅允许通过赋值⽅法和取值⽅法)
– 对可能的⽅法尽量采⽤移除设置⽅法进⾏重构
– 采⽤封装集合⽅法去除对所有集合类型字段的直接访问
– 查看对象的各个客户,如果客户试图对数据做同样的⼯作,则对客户采⽤抽取⽅法,然后将⽅法移到
该类中
– 在完成上述⼯作后,可能发现类中存在多处相似的⽅法,使⽤相应的重构技术,以协调签名并消除重
复
– 对字段的⼤多数访问都不再需要,因为所移动的⽅法涵盖了其实际应⽤,因此可以使⽤隐藏⽅法来消
除对赋值⽅法和取值⽅法的访问
软件测试
1 软件测试概述
1.1 软件缺陷术语
错误(Error):在软件⽣存期内的不希望或不可接受的⼈为错误,其结果是导致 软件缺陷的产⽣。
缺陷(Defect):软件缺陷是存在于软件产品之中的那些不希望或不可接受的偏差,其结果是软件运⾏于某⼀特定
条件时出现故障。
故障(Fault):软件运⾏过程中出现的⼀种不希望或不可接受的内部状态,若⽆ 适当措施(容错)加以及时处理,
便产⽣软件失效。
失效(Failure):软件运⾏时产⽣的⼀种不希望或不可接受的外部⾏为结果。
1.2 软件测试概念
测试是使⽤⼈⼯和⾃动⼿段来运⾏或检测某个系统的过程,其⽬的在于检验系统是否满⾜规定的需求或弄清预期结
果与实际结果之间的差别。
软件测试的目的:
直接⽬标:发现软件错误
期望⽬标:检查系统是否满⾜需求
附带⽬标:改进软件过程
测试的局限性:
测试的不彻底性
测试的不完备性
测试作⽤的间接性
Venn 图:
剩余20页未读,继续阅读
经年哲思
- 粉丝: 18
- 资源: 329
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0