软件工程第二章
编程过程与规范
编程是软件工程师的基本能力
编写优雅的代码是每一个程序员的不懈追求
编程是一门艺术,他能够展示结构之美,构造之美,表达之美
软件变成工作
软件编程是一个复杂而迭代的过程,它不仅仅是编写代码,还应该包括代码审查,单元测试,代码优化,集成调试等一系列工作。
系统模型到源代码
- 编写代码
- 代码审查
- 单元测试
- 代码优化
- 系统构建
- 集成调试
高质量软件开发之道
- 规范的编码
- 高质量的设计
- 有效的测试
软件编程规范
是与特定语言相关的描写如何编写代码的规则集合
目的
- 提高编码质量,避免不必要的程序错误
- 增强程序代码的可读性,可重用性和可移植性
学会只编写够用的注释,过犹不及,重视质量而不是数量
- 好的注释解释为什么,而不是怎么样
- 不要在注释中重复描述代码
- 当自己在编写密密麻麻的注释来解释代码时,需要停下来看是否存在更大的问题
- 想一想在注释中写什么,不要不动脑筋就输入
- 写完注释之后要在代码得上下文中回顾一下,它们是否包含正确的信息
- 当修改代码时,维护代码周围的所有注释
命名规范
好的名字一目了然,不需要读者去猜,甚至不需要注释
编写自文档化的代码
- 唯一能完整并正确的描述代码的文档是代码本身
- 编写可以阅读的代码,其本身简单易懂
良好的编程实践
看:阅读优秀的代码,学习别人的代码
问:发现问题,提出问题
练:亲自动手编写代码,实践,实践,再实践
高质量的设计
- 模块化设计:将一个大的程序按功能分拆成一系列小模块
- 面向抽象编程
- 错误与异常处理
基于易变与稳定:认识和识别变与不变的部分,并将之科学地分离开
易变:业务逻辑
稳定:通用功能
基于单一职责:类或者函数应该只做一件事,并且做好这件事
单一职责:只有一个引起变化的原因
在模块化设计的基础上,先设计出各个模块的骨架,或者说对各个模块进行抽象,定义它们之间的接口
代码静态检查
代码审查是一种用来确认方案设计和代码实现的质量保证机制,它通过阅读代码来检查源代码与编码规范的符合性以及代码得质量。
代码审查的作用:
- 检查设计的合理性
- 互为Backup
- 分享知识,设计,技术
- 增加代码可读性
- 处理代码中的“地雷区”
检查编码规范
面向对象设计
性能方面
资源释放处理
程序流程
线程安全
数据库处理
通讯方面
异常处理
方法
安全方面
其他
代码性能分析
优化师对代码进行等价变换,使得变换后的代码运行结果与变换前的代码运行结果相同,但执行速度加快或存储开销减少
- 代码性能优化师一门复杂的学问
- 根据80/20原则,实现程序的重构,优化,扩展以及文档相关的事情通常需要消耗80%的工作量
满足正确性,可靠性,健壮性,可读性等质量因素的前提下,设法提高程序的效率
以提高程序的全局效率为主,提高局部效率为辅
在优化程序效率时,应先找出限制效率的“瓶颈”
先优化数据结构和算法,再优化执行代码
从一开始就要考虑程序性能,不要期待在开发结束后在做一些快速调整
正确的代码要比速度快的代码重要,任何优化都不能破坏代码得正确性
- 证明需要进行优化
- 找出优化关键部门
- 测试代码
- 优化代码
- 评测优化后的代码
认真选择测试数据
永远不要在没有执行前后性能评估的情况下尝试对代码进行优化
性能优化的关键是如何发现问题,寻找解决问题的方法
有效的测试是不可缺少的,通过测试找出真正的瓶颈,并分析优化结果
要避免不必要的优化,避免不成熟的优化,不成熟的优化师错误的来源
改进算法,选择合适的数据结构
- 良好的算法对性能起到关键作用,因此性能改进的首要点是对算法改进
循环优化的基本原则:尽量减少循环过程中的计算量,在多重循环的时候,尽量将内层的计算提到上一层
结对编程
结对编程是由两名程序员在同一台电脑上结对编写解决同一问题的代码
驾驶员:负责用键盘编写程序
领航员:起到领航,提醒的作用