为学堂在线清华大学《软件工程》第二章部分视频笔记
-
2.1 编写高质量代码
- 软件编程
软件编程是一个复杂而迭代的过程,它不仅仅是编写代码,还应该包括代码审查、单元测试、代码优化、集成调试等一系列工作。
- 软件编程规范
软件编码规范是与特定语言相关的描写如何编写代码的规则集合。- 目的
目的
·提高编码质量,避免不必要的程序错误
·增强程序代码的可读性、可重用性和可移植性
- 现实
·软件全生命周期的70%成本是维护
·软件在其生命周期中很少由原编写人员进行维护
- 目的
- 推荐Google公司的编程规范
软件编程规范并不存在一个业界间的统一标准,许多公司都会制定自己的规范,推荐Google公司制定的,因为他相对来说接受的范围更广泛一些。
- python编程规范:程序模板
- python编程规范:注释
形式1∶由#开头的“真正的”注释说明选择当前实现的原因以及这种实现的原理和难点;
形式2∶文档字符串,说明如何使用包、模块、类、函数(方法),甚至包括使用示例和单元测试。- 学会只编写够用的注释,过犹不及,重视质量而不是数量。
不要解释怎么样,而是为什么
写的太多了就应该检查一下是否规范
修改代码时,要维护附近的注释
- 好处:可以用规范的注释自动生成文档
- 编写自文档化的代码
不要编写需要外部文档支持的代码,这样的代码是脆弱的,要确保你的代码本身读起来就很清晰。
- 学会只编写够用的注释,过犹不及,重视质量而不是数量。
- python编程规范:命名
- 好的名字一目了然,不需要读者去猜,甚至不需要注释。
- python编程规范:语句
- import语句应遵循的原则∶
- Python还有很多灵活的用法,使用时应注意删繁就简。
- python编程规范:更多完整内容
- 软件编程
-
2.3 Python集成开发环境
- 考虑到后续Web开发的需要,我们选择PyCharm进行进一步的介绍
- 下载pycharm专业版,学生可以申请免费版
- pycharm的使用步骤
- 下载与安装
- 专业版激活
社区版不用激活
如果申请了学生版,就可以免费使用专业版,此时需要通过JetBrainsAccount进行激活,在申请学生版时将注册该账号。
- 创建项目
- 创建python脚本文件及运行配置
- 运行
- 调试
在脚本文件某处增加一个断点,点击调试按钮,程序就会自动在断点处停下来
- IDE设置
- PyCharm能在一定程度上帮助我们写出规范的代码,但也不应太过依赖,真正养成规范编程习惯才是最有效的。
- 了解更多
-
2.4 代码静态检查
- 代码审查
代码审查(Code Review)是一种用来确认方案设计和代码实现的质量保证机制,它通过阅读代码来检查源代码与编码规范的符合性以及代码的质量。
- 缺陷检查表涉及的方面
编程规范,面向对象设计,性能方面,资源释放处理,程序流程,线程安全,数据库处理,通讯方面,JAVA对象处理,异常处理,方法(函数),安全方面,其他。
- python代码分析工具
可以提高代码审查的效率- Pylint
- 功能
1.检查代码风格是否符合PEP8规范
2.检查代码是否存在常见的错误和违反最佳实践
3.检查重复的代码
- Pylint安装与使用
都是在命令行中输入
- Pylint
- 代码静态分析工具
各种编程语言都有自己的静态分析工具
- 代码审查
-
2.5代码性能分析
- 代码性能优化
优化是对代码进行等价变换,使得变换后的代码运行结果与变换前的代码运行结果相同,但执行速度加快或存储开销减少。
- 测试代码
有效的测试是不可缺少的,通过测试找出真正的瓶颈,并分析优化结果- 性能测试工具profile
Profile是Python语言内置的性能分析工具,它能够有效地描述程序运行的性能状况,提供各种统计数据帮助程序员找出程序中的性能瓶颈。
执行结果包括,程序输出结果,程序执行时间和详细的函数性能数据报表
- 在实际项目中,我们要根据改进实际得到的效果和投入的精力之间进行平衡
- 性能测试工具profile
- Python代码性能优化
·性能优化的关键是如何发现问题,寻找解决问题的方法。
·要避免不必要的优化,避免不成熟的优化,不成熟的优化是错误的来源- 改进算法,选择合适的数据结构
·良好的算法对性能起到关键作用,因此性能改进的首要点是对算法改进
- 循环优化的基本原则∶
尽量减少循环过程中的计算量,在多重循环的时候,尽量将内层的计算提到上一层。
- 字符串的优化:
Python的字符串对象是不可改变的。字符串连接的使用尽量使用join()而不是+。当对字符串可以使用正则表达式或者内置函数处理时,选择内置函数。
- 使用列表解析和生成器表达式∶
列表解析要比在循环中重新构建一个新的list更为高效,因此可以利用这一特性来提高运行的效率。
- 改进算法,选择合适的数据结构
- 代码性能优化
-
2.6结对编程实践
- 结对编程
·结对编程不仅意味着编程活动,也包括分析、设计、测试等全程活动。- 结对编程是由两名程序员在同一台电脑上结对编写解决同一问题的代码。
驾驶员∶负责用键盘编写程序 领航员︰起到领航、提醒的作用
两个人轮流驾驶,角色互换
- 结对编程是一个相互学习、相互磨合的渐进过程,实施时需要团队成员克服个性冲突和习惯差异。
- 结对编程是由两名程序员在同一台电脑上结对编写解决同一问题的代码。
- 结对编程不适用的场合
- 结对编程