我选择的代码是一套给予tensorflow的ssd目标检测算法的实现代码。
其采用的编程语言是python,项目特点主要是提供ssd算法实现的一种思路,比较简洁,没有用户界面。
完整目录结构如下:
其中,datasets文件夹用来存储Pascal VOC数据集,train_ssd_network.py
负责训练神经网络,其他还有是需要调用的依赖文件。
该项目的命名方法很统一,文件名/类名/函数名/变量名等命名全部采用蛇形命名法(snake case),如下图,即在命名时用下划线将单词连接起来,字母一般用小写,例如:file_name、 line_number。相比于其他命名法,蛇形命名发更容易阅读。
由于该项目中没有使用到接口,所以仅谈论一下在编码过程中如果需要使用到接口时接口的定义规范,一般来说接口最重要的两点就是1.输入参数要统一,例如采用json字符串这样的参数就是不好的选择,因为这种参数可读性极差。2.返回类型要统一,例如需要返回用map存储的数据时,若使用string返回则非常不便于解析,建议统一使用json格式。
首先,命名方法统一很符合代码的命名规范,可阅读性较强。另外,项目有很多注释,标注出函数或某语句的功能,让别人可以更快速的读懂这套代码。总的来说,我觉得是很好的代码,各方面都符合要求和规范。
这套代码在GitHub上有5K多的star,实属比较优秀的代码了,很遗憾以我目前的水平,我并不能提出有意义的优化改进。
python语言本身就讲究优雅,简洁,但是这离不开优良的代码规范和风格。
a.长的导入模块语句
b.注释里的URL
顶级定义之间空两行, 方法定义之间空一行。 比如函数或者类定义. 方法定义, 类定义与第一个方法之间, 都应该空一行. 函数或方法中, 某些地方要是你觉得合适, 就空一行.。
用4个空格来缩进代码绝对不要用tab, 也不要tab和空格混用.。
按照标准的排版规范来使用标点两边的空格,括号内不要有空格。
2.注释:确保对模块, 函数, 方法和行内注释使用各自正确的风格,不能一概而论。
3.命名规范:
a.用单下划线(_)开头表示模块变量或函数是protected的(使用import * from时不会包含)。
b.用双下划线(__)开头的实例变量或方法表示类内私有。
c.将相关的类和顶级函数放在同一个模块里,不像Java, 没必要限制一个类一个模块。
d.对类名使用大写字母开头的单词(如CapWords, 即Pascal风格),但是模块名应该用小写加下划线的方式(如lower_with_under.py)。
原文:https://www.cnblogs.com/oranzhi/p/11668617.html