版权声明
这个大部分笔记是观看up主红桃A士
的视频记录下来的,因为本人在学习的过程中也经常出现类似的问题,并且觉得Up主的视频讲解很好,做此笔记反复学习,若有侵权请联系删除,此推荐视频地址:【改善丑陋的代码】 https://www.bilibili.com/video/BV1844y1N7S8/p=28&share_source=copy_web&vd_source=688b3f7cfe13111b787853fb99306d7b
1.命名规则
本命名规范针对深度学习,根据我平时写代码的时候自己总结的一套规则。
1.1 路径命名规则
全部采用小写代码,使用名词,不适用动词。
比如我自己的一个代码结构:
---- data: 数据集
---- models:模型
---- dataprocess:数据处理
---- logs:日志文件
---- utils:工具类
1.2 代码文件/类命名
驼峰命名法则,开头大写,使用名字、动名词
比如我自己一个代码命名
---- ModelingAbstrct:模型训练抽象类
---- DataSetLoader:数据集加载类
---- DataProcesser: 数据预处理类
1.3 函数/变量命名规则
java使用驼峰命名法,首字母小写,动词加名词
python使用蛇形命名法,全部使用小写字母,使用下划线做为分隔符号
比如我自己的一个代码命名:
---- def convert_word_to_token():将汉字转换成token
---- def load_origin_data():加载原始数据
---- best_micaroF1:最优微平均
---- max_doument_length:最大文本长度
2.高可读命名规范
2.1 为什么命名这么重要
原因:
- 第一眼被人看到,留下第一印象
- 看不懂代码片段的时候,会结合命名进行联想
- 获取某个范围中的关键信息时,会使用全局字符查找
那么如何又能规范命名?
- 变量名能否看出这个变量关联什么东西
- 变量名是否能够看出变量是用来做什么的?
举一个例子:
给一段我们通常容易写的代码命名
class File
{
int d;
}
bool flag=false;
List<File>list1=new List<File>(....);
foreach(var item in list1)
{
if(item.d>0){
flag=true;
break;
}
}
看了这段代码是不是很熟悉,就像我们平时写的代码一样,代码中的变量没有人和语义信息,需要联系上下文才可以看出代码所表达的含义。
** 优化命名规范:**
class File
{
int daysSinceModifycation;
}
bool isFileChanged=false;
List<File>createFiles=