全文共6633字,预计学习时长13分钟
图片来源:pexels.com/@digitalbuggu
请快速说出以下代码的功能:
很难,对吧?要想对这段代码进行修改或调试,除非知道作者在想什么,否则将难以实现。即使是作者本人,在编写这段代码几天后也会忘记其用途,因为变量名和“魔数”(magic numbers)并不能帮助记忆代码的功能。
什么是魔数:https://en.wikipedia.org/wiki/Magic_number_(programming)?source=post_page---------------------------#Unnamed_numerical_constants
使用数据科学代码时,类似于上面(或者更糟)的示例很常见:代码中含有如x、y、xs、x1、x2、tp、tn、clf、reg、xi、yi、ii这样的变量名和许多未命名的常量值。坦率地说,数据科学家(包括本人)并不擅长于命名变量。
很多人经历过从为一次性分析编写研究导向的数据科学代码到编写生产水平代码的过程,所以不得不摒弃从数据科学书籍、课程和实验室中获得的实践来改进编程方式。可实际应用的机器学习代码与数据科学家的编程方法有许多不同之处,但本文将从两个影响力较大的常见问题开始:
· 无用的/混淆的/不明确的变量名
· 未命名的“魔幻”常数
这两个问题都导致了数据科学研究(或Kaggle项目)和生产机器学习系统之间的脱节。是的,你可以在只运行一次代码的Jupyter Notebook中侥幸逃脱这些问题,但是当任务中关键的机器学习管道需要每天准确无误地运行数百次时,编写可读以及可理解的代码就十分必要了。幸运的是,数据科学家可以采用软件工程中的最佳实践,本文也将对其进行介绍。
注意:本文主要讨论Python,因为它是目前为止工业数据科学中应用最广泛的语言。在Python中:
· 变量名/函数名小写并且用下划线隔开
· 命名常数的名称全部大写
· 类的名称采用驼峰式大小写命名规则
命名变量
命名变量时要记住三个基本原则:
1. 变量名必须描述变量所表示的信息。变量名应该用词明确,来体现变量代表的内容。
2. 代码读取的次数将多于编写的次数。所以优先考虑代码的可读性而不是编写速度。
3. 采用标准的命名规范,才可以做出一个全局决策,而不是做出多个局部决策。