还记住我们刚刚谈到的,必须在代码中的多个地方删除字典中的重复项吗?使用函数,你就不需要多次重写代码 。当然,即使你不重用代码,把代码封装在函数中也是至关重要的最佳做法 。你的函数应该很小,小到只能做一件事情,以便可以重复调用 。
当你不使用函数时,经常会有有全局变量导致命名冲突,代码不可测试和代码的不断重复 。
通过使用函数,你的代码就可以自由组合,更易于编写测试单元 。
但是不要仅仅止步于写一些只做一件事情的小函数,请务必抽象你的函数,以便重新使用它们 - 这样有助于降低代码冗余度,并能加快你的开发时间,这样做下去至少让你成为一个2x 程序猿 。
尽管不太常见,但代码设计中很重要的一点是使用桩代码 。桩代码是简单的mock类以及函数,可以显示输入,输出和注释,并为代码提供一个大纲 。在你开始实际编写代码之前,使用桩代码会让你先考虑代码,并可以帮助你避免怪异的意大利面条式的代码 。你会注意到你在编写代码之前有哪些重复的代码,并且会考虑最合适的数据结构 。
上面的代码示例给我们展示了注释和文档 。要真正成为一个被同事喜欢的程序猿,并提高自己作为一名数据科学家的效率,就要会写有用的简明扼要的注释 。这不仅应该包括关于代码段的注释,还包括其输入和输出 。
此外,关于docstrings可能最酷的是,它们可以通过大多数语言的库转换为文档 。例如Python有一个名为Sphinx的库,可以让你将docstrings转换成完整的文档 。
你现在可能知道你的代码是什么,但当你尝试调试或添加函数时,你和其他人将非常开心有注释 。
无论你使用什么语言编写代码,请记得使用异常处理,并为你自己,同事和最终用户留下有用的错误信息 。上面的代码显示了一个停止函数,能够传递来自正在调用的API的错误消息 。
如果数据不是API需要的,那么它就会引发一个有用的错误消息 。在你自己的代码中,你可以在停止函数中写一个消息,帮助用户:
stop(paste0(“Make sure all your inputs are strings: ”, e))
以上示例来自“Hitchhikers Guide to Python”,它使用Python测试库Pytest 。
尽管编写测试单元对于开发人员来说相当普遍,但这在数据科学领域却很少使用 。当然,你可以使用交叉验证,混淆矩阵和其他方法来验证你的模型 。但是,你是否测试了正在为你获取数据的查询? 你使用的各种方法是如何清理和转换数据的,你的模型需要它们吗? 这些方面对于安全防范“Garbage in, garbage out”(小编注:这两个单词的意思是,如果将错误的、无意义的数据输入计算机系统,计算机自然也一定会输出错误、无意义的结果 。)至关重要 。当你测试代码时,不仅这两个未来的证据可以反映可能引入错误的变化,而且当你有能力自己给自己检查代码时,每个人都会认为你就像一个摇滚明星一样耀眼,因为一旦代码被用于实际生产就会发现bug非常少 。
为你的项目使用版本控制是成为10x数据科学家的重要一步 。这最明显的好处是保存模型的不同版本,既可以轻松地进行团队工作,也可以通过在存储库中使用版本控制进行备份,防止在笔记本电脑被盗或硬盘驱动器坠毁的情况下丢失工作 。
在beta版中,有一个名为Data Version Control的开源数据版本控制项目,对于数据科学工作流程来说看着很有希望 。它依靠Git,并允许通过构建数据依赖图来跨团队重现项目 。你的数据会与你的模型分开保存,它与其他版本控件一样工作,允许你回滚到以前保存的备份 。
推荐阅读
- 农业气象学有什么好处,农业方面要学的技能有哪些
- 机械专业选什么学校,机械专业考研选哪些学校
- 江西有什么英语本科院校,江西的二本学校有哪些
- 电子商务论文可以写哪些,比较好写的电子商务论文
- 文科可以报什么医学,文科生可以报哪些医科大学
- 代县有什么高中,百年老校有哪些
- 公司想招人进哪个网站,招聘网站有哪些
- 苹果产品有哪些
- 狗吃什么最好还能喂狗狗吃哪些东西,狗喂什么最好
- 北大一流学科有什么,考研双一流都有哪些学校
