数据科学家应该了解的软件工程实践
极客时间编辑部
讲述:丁婵大小:7.11M时长:05:10
你好,欢迎收听极客视点。
最近,数据科学家柯蒂斯·派克斯(Kurtis Pykes)在 LinkedIn 上进行了一次民意调查,他发现,很多人持有这样的观点:数据科学家必须懂得编程标准并遵循工程最佳实践。
许多数据科学家(包括我自己)都缺乏基本的统计学知识,对统计学的应用知之甚少。而数学家们认为,在应用之前,必须对应用于各种场景的原理有一个坚实的理解,而且,软件工程师希望数据科学家能够在遵循基本编程原则的同时进行实验。
一、整洁代码
我学的第一门编程语言是 Python,因为我的英语很流利,对我来说, Python 与英语非常相似。从技术上讲,这指的是 Python 编程语言的高可读性,这是 Python 的设计者在意识到代码阅读的频率比代码编写的频率更高,特意设计成这样的。
我将列出一些构成整洁代码的因素,但我并不打算说得过于详细,因为我相信,这些主题,有很多很棒的资源讲得比我还好。
有意义且可发音的命名约定;
清晰度高于一致性;
可搜索命名;
使你的代码易读。
请记住,不只是别人会阅读你的代码,你自己也会阅读。如果你不记得某些命名的含义,请想象一下别人会有什么希望。
二、模块化
这可以部分归咎于我们学习数据科学的方式。如果一个数据科学家不能打开一个 Jupyter Notebook 并开始做一些探索,我会感到惊讶。但这就是 Jupyter Notebook 的作用:实验!然而不幸的是,许多关于学习数据科学的课程并没有很好地将我们从 Jupyter Notebook 转移到脚本上,而脚本对于生产环境来说更为有效。
当我们谈论模块化代码时,我们指的是被分离成独立模块的代码。通过有效地执行,模块化可以使打包、测试和可维护的代码能够重复使用。
学习模块化和软件工程最佳实践的一个方式是通过阅读 GitHub 上的 Scikit Learn 代码。
其他有助于编写好的模块化代码的因素包括:
1. 不要重复你自己(Don’t repeat yourself,DRY)
这是面向对象编程中的基本原则,是程序员的行事准则。旨在软件开发中,减少重复的信息,在编程过程中不写重复代码,将能够公共的部分抽象出来, 封装成工具类或者用 “abstraction” 类来抽象公有的东西,降低代码的耦合性。这样不仅提高代码的灵活性、健壮性以及可读性,也方便后期的维护或者修改。
2. 单一功能原则(Single Responsibility Principle,SRP)
这是一种计算机编程原则,规定每个类都应该有一个单一的功能,并且该功能应该由这个类完全封装起来。
3. 开闭原则(Open-Closed Principle)
在面向对象编程领域中,开闭原则规定 “软件中的对象(类、模块、函数等等)应该对于扩展是开放的,但是对于修改是封闭的 ”,这意味着一个实体是允许在不改变它的源代码的前提下变更它的行为。
三、重构
代码重构可以定义为在运行时不改变代码外部行为的情况下重构现有代码的过程,重构旨在改进软件的设计、结构和 / 或实现(其非功能属性),同时保留其功能。
重构代码有很多好处,例如,提高了代码的可读性,降低了复杂性,这反过来又使源代码更容易维护。
此外,我们不能只谈论代码重构而不谈论性能的提高。我们的目标是编写一个执行速度更快、占用内存更少的程序。
四、测试
在某种意义上,数据科学是一个有趣的领域,即使我们的代码有错误,但我们的代码仍然有可能能够运行,而在软件相关项目中,代码会抛出一个错误。因此,我们最终会得到误导性的见解(也可能找不到工作)。因此,测试是必要的,如果你懂得测试,你的身价就会上升。
以下是我们进行测试的一些原因:
确保我们得到正确的输出。
更新代码更容易。
防止将破坏的代码推送到生产环境。
我相信还有更多的原因,但我不再就此赘述。
五、代码审查
代码审查的目的是通过推广最佳编程实践来提高代码质量,使代码能够为生产做好准备。此外,这对每个人都有好处,因为它往往会对团队和公司文化产生积极影响。代码审查的主要目的是发现错误,尽管审查对于提高可读性以及确保满足编码标准非常有用。
以上就是数据科学家应该了解的五个软件工程实践,希望对你有所帮助。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(1)
- 最新
- 精选
- 小斧一、整洁代码 二、模块化 1. 不要重复你自己(Don’t repeat yourself,DRY) 2. 单一功能原则(Single Responsibility Principle,SRP) 3. 开闭原则(Open-Closed Principle) 三、重构 四、测试 五、代码审查7
收起评论