分析一套源代码的代码规范和风格并讨论如何改进优化代码

我的工程选题是目标检测,目标检测要分类图片的物体,同时还要检测出物体的位置,并在该物体周围绘制边界框,这是两个过程。而目标检测算法,传统的基于图像的Hog/haar等特征+分类器去实现,随着深度学习的流行,产生了很多深度学习模型,比如:RCNN系列,R-CNN,fast R-CNN,faster R-CNN等,还有其它YOLO,SSD等模型。

本文用faster R-CNN来分析代码规范。

分析一套源代码的代码规范和风格并讨论如何改进优化代码_第1张图片

这就是faster RCNN的目录结构,编程语言是python,深度学习的代码,目录结构清晰,数据放在数据目录下,需要的文件都准备好,需要的库文件也都准备好,比如常见的READYME是帮助文档,requirements.txt表示插件及目录版本控制 pip freeze 直接打印应用的包,这些都是python项目应该有的文件。

代码的文件名要尽量做到见名知意,同时尽量使用英文。看起来更加规范,文件名一般要用utf-8编码。

模块名:模块尽量使用小写命名,首字母保持小写,尽量不要用下划线(除非多个单词,且数量不多的情况) 。

类名:使用驼峰(CamelCase)命名风格,首字母大写,私有类可用一个下划线开头。

函数:函数名一律小写,如有多个单词,用下划线隔开。

变量名:变量名尽量小写, 如有多个单词,用下划线隔开,数字不能开头,只能有字母,数字,下划线三种类型。

常量:常量使用以下划线分隔的大写命名。

下图是代码当中的一部分,可以看出都符合上述规范。

分析一套源代码的代码规范和风格并讨论如何改进优化代码_第2张图片

python的接口规范和单元组织测试:

接口泛指实体把自己提供给外界的一种抽象化物,用以由内部操作分离出沟通外部的方法,使其能被修改内部而不影响外界其它实体与其交互的方式。

首先是文件命名,依旧是项目文件和函数都是小写加下划线,类的命名依然是驼峰,除此以外,还有简单逻辑先处理,特殊异常捕获,封装响应对象,这里所有的自定义接口都被封装在另一个文件内,一般是抽象类,抽象类不能实例化对象,可以通过继承的方法来调用。还要提供接口文档,相当于功能测试的需求文档,一般包括接口名称和功能,接口调用方式,接口调用地址,接口参数说明等等。

接口测试就是指通过对接口按不同的要求发送请求,检测接口的返回的结果是否符合预期,python接口自动化测试,利用urllib2,urllib模块来调用接口,利用unittest模块判断接口的返回值是否符合预期。

列举符合代码规范和风格一般要求

按要求空行,比如函数与函数,类与类之间要有空格,格式更清晰,函数要有注释,变量名设置符合规则,而且要见名知意,缩进要整齐,该缩进要有缩进等等。

列举哪些做法有悖于“代码的简洁、清晰、无歧义”的基本原则,及如何进一步优化改进

代码不规范,不整洁,不按照规定注释,或者代码无注释,变量名中文拼音,不按照代码规范定义变量,缩进和空行,不按照要求缩进或者代码不美观,看起来增加难度,都是不规范,模块的定义不规范,导入模块不规范,模块的使用不规范等等。

字符串拼接,尽量使用join。使用str的方法而不是内置方法。使用startswith或endswith拉检查前缀和后缀。单例对象,尽量使用is 、is not,不要使用==。使用is not而不是not is。使用def来定义函数,而不是将匿名函数赋给某个变量。尽量使代码整齐,简洁。使用isinstance()来判断instance的类型。

总结同类编程语言或项目在代码规范和风格的一般要求

python代码一般要遵循PEP 8编码风格建议和Google Python Style Guide谷歌python编码风格建议。

  • python的语言规范:imports 仅仅用做包和模块的导入,包的导入每个尽量独占一行;packages 导入模块尽量使用模块的全路径;Exceptions 必须小心使用;Global variables 避免使用全局变量;lambda 函数仅仅适用于一行代码能实现的简单函数;True or False 尽量使用[],'',{},0,None来隐式表示False
  • Python风格规范:缩进,4个空格实现缩进,尽量不使用Tab,禁止混用Tab和空格;行,每行最大长度不超过79,换行可以使用反斜杠(\)。最好使用圆括号将换行内容括起来,不建议使用“;”;空行,类和top-level函数定义之间空两行;类中的方法定义之间空一行;函数内逻辑无关段落之间空一行;其他地方尽量不要再空行;括号内的第一个位置,不要空格。紧靠右括号的位置也不要空格。冒号(:)、逗号(,)、分号(;)之前不要加空格。切片木有参数,不要加空格等;对于单元素tuple一定要加,和括号。
  • 注释规范:块注释,在一段代码前增加的注释。在‘#’后加一空格。段落之间以只有‘#’的行间隔;行注释,在一句代码后加注释;避免无谓的注释。

 

你可能感兴趣的:(分析一套源代码的代码规范和风格并讨论如何改进优化代码)