分析一套源代码的代码规范和风格并讨论如何改进优化代码
Posted ustc314
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分析一套源代码的代码规范和风格并讨论如何改进优化代码相关的知识,希望对你有一定的参考价值。
我的工程实践课题是《facering:头部3D建模以及面部表情追踪识别》,基于此课题,我找了一个类似此课题的demo并对其进行分析
1.(1)目录结构
该代码比较简单,所以只用到了一级目录
detect.py用于检测人的面部表情
shaders.py用于绘制头部的3D模型
shape_predictor_68_face_landmark.dat用于人物面部表情在模型上的重定向
(2)文件名/类名/函数名/变量名等命名风格
如图,不论是变量名还是函数名,命名都体现除了变量和函数的功能,比如变量face_detect就表明该变量用于人脸检测,代码的可读性很强
(3)接口定义规范
接口泛指把供给外界直接调用、使用、访问等并且无需知道其内部的具体逻辑结构的抽象函数。该demo中,接口都是以参数,返回值和抽象函数去定义的
(4)单元测试组织形式
因为是Python语言编写的代码,所以该项目的单元组织测试形式为一个窗口或者菜单
2.列举哪些做法符合代码规范和风格一般要求
该demo中文件名/类名/函数名/变量名等命名、接口定义规范和单元测试组织形式符合都代码规范和风格一般要求,尤其时它的函数名和变量名的命名,一目了然,让人一眼就明白该函数或者变量的功能是什么,清晰明了,代码的可读性很强
3.列举哪些做法有悖于“代码的简洁、清晰、无歧义”的基本原则,及如何进一步优化改进
该代码整体还是比较简洁的,没有冗余,但是关键之处缺乏注释,虽然函数名已经起到了解释该函数功能的作用,但是对于英文不太好的程序员来说代码的可读性还是不强,所以,改进方法为:每个功能函数应该添加相应的注释,描述该函数的功能以及逻辑结构,便于后期运维人员对代码的维护和更新优化
4.该类代码的规范和风格
(1)语言规范
imports 仅仅用做包和模块的导入,包的导入每个尽量独占一行
packages 导入模块尽量使用模块的全路径
Exceptions 必须小心使用
Global variables 避免使用全局变量
lambda 函数仅仅适用于一行代码能实现的简单函数
True or False 尽量使用[],‘‘,{},0,None来隐式表示False
(2)风格规范
代码编排:
1 缩进:4个空格实现缩进,尽量不使用Tab,禁止混用Tab和空格
2 行:每行最大长度不超过79,换行可以使用反斜杠()。最好使用圆括号将换行内容括起来,不建议使用“;”
3 空行:类和top-level函数定义之间空两行;类中的方法定义之间空一行;函数内逻辑无关段落之间空一行;其他地方尽量不要再空行。
4 空格:括号内的第一个位置,不要空格。紧靠右括号的位置也不要空格。冒号(:)、逗号(,)、分号(;)之前不要加空格。
5 括号:对于单元素tuple一定要加,和括号
(3)命名规范:
module_name
package_name
ClassName
method_name
ExceptionName
function_name
GLOBAL_CONSTANT_NAME
global_var_name
instance_var_name
function_parameter_name
local_var_name
(4)其它建议:
1. 字符串拼接,尽量使用join。使用str的方法而不是内置方法。使用startswith或endswith拉检查前缀和后缀
2. 单例对象,尽量使用is 、is not,不要使用==
3. 使用is not而不是not is
4. 使用def来定义函数,而不是将匿名函数赋给某个变量
5. 尽量使代码整齐,简洁
6. 使用isinstance()来判断instance的类型
以上是关于分析一套源代码的代码规范和风格并讨论如何改进优化代码的主要内容,如果未能解决你的问题,请参考以下文章