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

个人工程实践是脱机手写汉字识别相关的,准备借助GoogLeNet做为网络重要模块,在GitHub上找到了基于GoogLeNet的图像分类算法开源项目。python

 

(一)在源代码目录结构、文件名/类名/函数名/变量名等命名、接口定义规范和单元测试组织形式等方面的作法和特色;算法

代码的目录结构以下:shell

1.文件名命名编程

dataset中主要存放训练测试数据集,以及相关标签数据;网络

tools中:create_tf_record.py——图片生成训练数据编程语言

                VGG、inception_v一、inception_v三、mobilenet_v、resnet_v1——训练文件编辑器

               README.md——项目概要,向读者快速介绍这项工程函数

               predict.py——根据图片预测类别单元测试

2.类名/函数名/变量名命名测试

以最基本的读取图片的函数为例,函数名(read_image),变量名(filename/height/width)都清晰明了,注释也至关清晰。

3.接口定义规范

在Python中接口由抽象类和抽象方法去实现,接口是不能实例化的,只能被别的类继承去实现相应的功能。

4.单元测试组织形式

对于test_image中的图片,用predict.py对于网络训练结果进行预测,来测试模型的效果。

 

(二)哪些作法符合代码规范和风格通常要求;

1.命名规范

命名可读性强,且对于变量的注释详尽,对于其功能和用途的说明清晰到位。

2.缩进规范

代码总体看起来清晰规整,排版缩进等很是整齐。

3.注释规范

注释内容详细,不只准确描述了“作了什么”,也说明了“为何这么作”。

 

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

部分代码一行过长,每一行的代码尽可能不要超出80个字的长度,超出的回车排版, 方法名的冒号对齐。

 

(四)总结同类编程语言或项目在代码规范和风格的通常要求。

1.编码

如无特殊状况, 文件一概使用 UTF-8 编码 
如无特殊状况, 文件头部必须加入#--coding:utf-8--标识

2.格式

缩进:统一使用 4 个空格进行缩进

行宽:每行代码尽可能不超过 80 个字符(在特殊状况下能够略微超过 80 ,但最长不得超过 120) ;

3.空行

模块级函数和类定义之间空两行; 类成员函数之间空一行;

4.空格

在二元运算符两边各空一格[=,-,+=,==,>,in,is not, and];

5.注释

行注释:行注释是与代码语句同行的注释。行注释和代码至少要有两个空格分隔。注释由#和一个空格开始

块注释:“#”号后空一格,段落件用空行分开(一样须要“#”号)

文档注释:做为文档的Docstring通常出如今模块头部、函数和类的头部,这样在python中能够经过对象的__doc__对象获取文档.编辑器和IDE也能够根据Docstring给出自动提示.

6.命名

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

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

 

函数名:函数名一概小写,若有多个单词,用下划线隔开

变量名:变量名尽可能小写, 若有多个单词,用下划线隔开

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

相关文章
相关标签/搜索