清华软件工程(二):编程过程与规范、良好的编程实践、代码静态检查、代码性能分析

一、编程过程与规范:

编程是软件工程师的基本能力; 编写优雅的代码是每一个程序员的不懈追求; 编程是一门艺术, 他能够展示结构之美、构造之美、表达之美;

1. 软件编程工作:

软件编程是一项复杂而迭代的过程, 它不仅仅是编写代码, 还应该包括代码审查、单元测试、代码优化、集成调试等一系列工作;
在这里插入图片描述

  • 高质量软件开发之道:
    • 高质量的设计;
    • 规范的编码;
    • 有效的测试

2. 软件编程规范:

软件编码规范是与特定语言相关的描写如何热编写代码的规则集合;
目的: 提高编码质量, 避免不必要的程序错误; 增强程序代码的可读性、可重用性和可移植性;
google编程规范

3. 编程规范:

  • 注释;
  • 命名;
  • 语句;

二、良好的编程实践:

1. 看问读:

如何向开源社区提问

2. 软件开发的工程思维:

3. 编程实践–高质量的设计:

高质量的设计包括:

  • 模块化设计;
  • 面向抽象编程;
  • 错误与异常处理;

3.1 模块化设计:

基本思想: 将一个大的程序按功能拆分成一系列小模块

  • 降低程序设计的复杂性;
  • 提高模块的可靠性和复用性;
  • 缩短产品的开发周期;
  • 易于维护和功能扩展;

模块划分思想:

  • 基于易变与稳定: 认识和识别变与不变的部分, 并将之科学地分离开;
  • 基于单一职责: 类或者函数应该只做一件事, 并且做好这件事;

模块化设计的好处:

  • 思路清晰, 易于测试, 适应未来可能的变化;

3.2 面向抽象编程:

在模块化设计的基础上, 可以先设计出各个模块的"骨架", 或者说对各个模块进行"抽象", 定义他们之间的"接口"; 定义各个模块互相关联的部分, 这些部分在未来开发中不应该发生改变;

3.3 错误与异常处理:

  • 错误: 是导致系统崩溃的问题; 解析错误, 运行错误
  • 异常: 是运行时期检测到的错误, 即使一条语句或者表达式在语法上是正确的, 当试图执行它时也可能会引发异常;

三、python集成开发环境:

pass

四、代码静态检查:

1. 代码评审技术:

**代码审查(code review)**是一种用来确认方案设计和代码实现的质量保证机制, 他通过阅读代码来检查源代码与编码规范的符合性以及diamante的质量;

代码审查的作用:

  • 检查设计的合理性;
  • 互为Backup;
  • 分享知识,设计,技术;
  • 增加代码可读性;
  • 处理代码中的"地雷区";

2. 缺陷检查表:

在这里插入图片描述在这里插入图片描述在这里插入图片描述

3. python的静态代码检查库 – pylint:

pylint官方文档

4. 代码审查实践: Code Review

五、代码性能分析:

效率是程序员之间永恒的话题, 如何才能写出运行更快、效率更高的程序, 这是每个优秀的程序员不懈追求的目标。

1. 代码性能优化:

优化是对代码进行等价交换, 使得变换后的代码运行结果不变,但运行速度加快或存储开销减少;

代码优化的条件:

  • 在满足正确性,可靠性,健壮性,可读性等质量因素的前提下, 设法提高程序的效率;
  • 以提高程序的全局效率为主, 提高局部效率为辅;
  • 在优化程序效率是, 应先找出限制效率的"瓶颈";
  • 先优化数据结构和算法, 再优化执行代码;
  • 时间效率和空间效率可能是对立的, 应当分析哪个因素更重要, 再做出适当的折衷;

2. 代码性能优化:

  • 从一开始就要考虑程序性能, 不要期待在开发结束后再做一些快速调整;
  • 正确的代码要比速度快的代码更重要, 任何优化都不能破坏代码的正确性;
  • 证明需要进行优化 => 找出优化关键部分 => 测试代码 => 优化代码 => 评测优化后的代码;
  • 认真选择测试数据, 使其能够代表实际的使用状况;
  • 永远不要在没有执行前后性能测试评估的情况下尝试对代码进行优化;

3. python代码优化建议:

  • 改进算法, 选择合适的数据结构:
    • 良好的算法对性能起到关键的作用, 因此性能改进的首要点是算法改进;
    • 算法时间复杂度依次是: O(1) => O(n lg n) => O(n^2) => O(n^3) => O(n^k) => O(k^n) => O(n!);
    • 对成员的查找访问等操作, 字典快于列表;
    • 集合的并、交、差的操作比列表的迭代要快;
  • 循环优化的基本原则:
    • 尽量减少循环过程中的计算量, 在多重循环时, 尽量将内层循环的计算提到上一层;
  • 字符串优化:
    • python的字符串对象是不可改变的. 字符串连接应尽量使用join()而不是"+". 当对字符串可以使用正则表达式后者内置函数处理时, 选择内置函数;
  • 使用列表解析和生成器表达式:
    • 列表解析要比循环中重新构建一个新的list更为高效;

六、结对编程实践:

1. 结对编程:

结对编程是由两名程序员在同一台电脑上结对编写解决同一问题的代码;
有助于提高代码质量,提升开发效率, 提高协作能力;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浅弋、璃鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值