个人工程实践是脱机手写汉字识别相关的,准备借助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)命名风格,首字母大写,私有类可用一个下划线开头
函数名:函数名一概小写,若有多个单词,用下划线隔开
变量名:变量名尽可能小写, 若有多个单词,用下划线隔开
常量名:常量使用如下划线分隔的大写命名