10 条让开发者受益终生的编码原则
添加微信:code_7steps,备注“进群”,邀请你加入大牛云集的技术交流群!
目前大多数开发者对于编码有一种固有印象,认为编码就是利用计算机语言实现一些复杂逻辑或者数学公式,让计算机能够按照我们的指令去完成相应的工作。
诚然,这样理解没有任何问题。
但是,真正的编码技术是不仅写出机器能够理解的语言,还要让人类能够轻松阅读和理解。
换个角度来看,写好代码就相当于写一个好故事。
首先,你需要正确的命名你的变量,就如同故事中的任务一样。
其次,需要用到一些或深奥、或浅显易懂的词汇来让你的故事表下的更加透彻。
同样,仅仅在代码中使用高级算法并不能让你成为一个好的编码者!
当我们在现实世界的项目中,与不同团队和业务部门合作时,需要写出干净、可维护的代码,甚至,还需要写出更加优秀的代码,使得能够跨功能工作。
在这篇文章中,我们将看到一些概念和编码实践,这些概念和实践一定能够长期帮助到你。
1. 对合适的人有合适的可见性
今天,我们生活在一个对技术的依赖性成倍增加的世界里,各行各业都在自动化、优化和扩大业务规模。
特别是当下工作环境中,数据驱动解决方案的必要性是不可避免的,我们需要考虑用面向对象的编程方式来解决业务问题。需要适当的抽象和封装,向不同层次的业务展示不同层次的可见性。
在商业领域通常讲:“客户只关心结果,不关心算法!”
这里的客户是广义的,任何直接/间接使用你的解决方案的人都是你的客户,或者内部的、或者外部的。
它可以是合作开发者,项目经理,项目经理,测试团队,或者实际的客户本身,这取决于你做什么。
举一个例子,一个客户到一杯奶茶店买一杯奶茶,他并不想知道牛奶和水的比例是多少,他想看到的只是一个结果。
2. 模块化的解决方案
把你的代码放在模块中。
与其给一个很长的脚本/jupyter 笔记本作为你的解决方案,利用import
导入模块。
它的优点是:
让客户的事情简单化,隐藏不必要的细节。
可重复使用
更容易协作
如果你对创建自己的 Python 包感兴趣,请查看官方文档。
3. 先创建一个 version0 的解决方案
先创建一个基本的解决方案。
这将使我们能够展示一些进展并开始讨论,这将有助于你获得客户的早期反馈。
一开始就错,总比最后错好。
4. 版本控制系统和日志记录
当你作为一个团队工作时,对 Git 等版本控制系统有一定的了解是必须的。
这将确保:
更容易协作和版本管理。
代码备份
每一行代码都可追溯
另外,有一个日志文件来跟踪你的进度和错误,将大大减少调试工作。
5. 即插即用的功能
创建一个配置文件,用于激活/停用解决方案的各种功能,这可以在很多方面帮助我们。
如果我们对同一个问题有多种可能的解决方案,并且需要测试所有的可能性。
你需要在一个子模块中调试一个问题,它不需要很多其他模块。
如果有一个即插即用的功能,你可以简单地停用它们,避免运行那些不需要的模块所花费的时间。
6. 相信人,而不是他们的代码
在现实世界的编码中,最重要的技能之一就是防御性编码。
防御性编码是一种以预测可能的失败点为目的的编程方式。
当你是一个大型项目的一部分时,你将会和很多其他的开发者合作,你将不得不创建具有外部输入的模块,这些外部输入将是原始数据本身或其他模块的处理输出。
我们需要预料到人为错误和现实世界噪音的可能性,并尝试处理它们。
我们的想法是,我们的解决方案不应该崩溃,如果你的模块无法运行,你应该记录错误并继续。
特别是当我们在处理 AI 项目时,由于 False positives,一些模块的失败是意料之中的,这并不意味着代码应该终止,这时候就需要你对这些报错点进行预估,然后做出适当的处理。
因此,做好异常处理是非常关键的一部分。
7. 也不要相信自己的代码!
这个不用多说,我们是人,人是容易犯错的。
无论你是多么优秀的编码员,都要时刻接受自己犯错的可能性。
一旦你完成了一个模块,休息一下。做一些别的事情,然后回来看看你的代码。
你会惊奇地发现,你可以很容易地找到刚才从未想到的错误和优化。
因此,这也体现到代码评审的重要性。
我一直践行一个原则:
提升代码质量最有效的途径就是:多看别人的代码,多让别人看自己的代码!
8. 不要对你的代码产生感情!
当你花了大量的时间进行头脑风暴,学习新技术,解决大量的问题之后,你往往会对它产生感情,因为它是由你的创造力和智慧创造出来的东西。
诚然,这种激情和创造力会让你写出更好的代码,解决复杂的挑战,但也有一些弊端。
你去向你的客户过度解释你的算法之美,而客户并不真正关心这些。
在一个不断发展的商业场景中,任何事情都可能在一天之内发生变化。你会被要求放弃过去一年的一切工作,开始着手一个新的项目,而对你的代码产生感情会让这一切变得困难。
这听起来可能很傻,但这是实实在在的事情,即使在这个行业工作了三年多,我有时还是会因为这个问题而挣扎。
9. 只能,追求完美
最后,要接受这样一个事实:完美是无法实现的,只能追求。
无论你觉得今天写的代码有多好,如果你会在一个月后看它,你可以想到很多方法让它变得更好。
但只要你追求完美,就会达到卓越的境界。
10. 结语
我在这篇文章中讨论的大部分观点不仅适用于编码,也适用于生活。
就像乔布斯说的那样:
每个人都应该学习电脑编程,因为它教你如何思考。
干货推荐
为了方便大家,我花费了半个月的时间把这几年来收集的各种技术干货整理到一起,其中内容包括但不限于 Python、机器学习、深度学习、计算机视觉、推荐系统、Linux、工程化、Java,内容多达 5T+,我把各个资源下载链接整理到一个文档内,目录如下:
所有干货送给大家,希望能够点赞支持一下!
评论