写点什么

10 条让开发者受益终生的编码原则

用户头像
Jackpop
关注
发布于: 1 小时前

添加微信:code_7steps,备注“进群”,邀请你加入大牛云集的技术交流群!


目前大多数开发者对于编码有一种固有印象,认为编码就是利用计算机语言实现一些复杂逻辑或者数学公式,让计算机能够按照我们的指令去完成相应的工作。


诚然,这样理解没有任何问题。


但是,真正的编码技术是不仅写出机器能够理解的语言,还要让人类能够轻松阅读和理解。


换个角度来看,写好代码就相当于写一个好故事。


首先,你需要正确的命名你的变量,就如同故事中的任务一样。


其次,需要用到一些或深奥、或浅显易懂的词汇来让你的故事表下的更加透彻。


同样,仅仅在代码中使用高级算法并不能让你成为一个好的编码者!


当我们在现实世界的项目中,与不同团队和业务部门合作时,需要写出干净可维护的代码,甚至,还需要写出更加优秀的代码,使得能够跨功能工作。


在这篇文章中,我们将看到一些概念和编码实践,这些概念和实践一定能够长期帮助到你。

1. 对合适的人有合适的可见性

今天,我们生活在一个对技术的依赖性成倍增加的世界里,各行各业都在自动化、优化和扩大业务规模。


特别是当下工作环境中,数据驱动解决方案的必要性是不可避免的,我们需要考虑用面向对象的编程方式来解决业务问题。需要适当的抽象和封装,向不同层次的业务展示不同层次的可见性。


在商业领域通常讲:“客户只关心结果,不关心算法!


这里的客户是广义的,任何直接/间接使用你的解决方案的人都是你的客户,或者内部的、或者外部的。


它可以是合作开发者,项目经理,项目经理,测试团队,或者实际的客户本身,这取决于你做什么。


举一个例子,一个客户到一杯奶茶店买一杯奶茶,他并不想知道牛奶和水的比例是多少,他想看到的只是一个结果。

2. 模块化的解决方案

把你的代码放在模块中。



与其给一个很长的脚本/jupyter 笔记本作为你的解决方案,利用import导入模块。


它的优点是:


  • 让客户的事情简单化,隐藏不必要的细节。

  • 可重复使用

  • 更容易协作


如果你对创建自己的 Python 包感兴趣,请查看官方文档。

3. 先创建一个 version0 的解决方案

先创建一个基本的解决方案。


这将使我们能够展示一些进展并开始讨论,这将有助于你获得客户的早期反馈。


一开始就错,总比最后错好。

4. 版本控制系统和日志记录

当你作为一个团队工作时,对 Git 等版本控制系统有一定的了解是必须的。


这将确保:


  • 更容易协作和版本管理。

  • 代码备份

  • 每一行代码都可追溯


另外,有一个日志文件来跟踪你的进度和错误,将大大减少调试工作。

5. 即插即用的功能

创建一个配置文件,用于激活/停用解决方案的各种功能,这可以在很多方面帮助我们。


如果我们对同一个问题有多种可能的解决方案,并且需要测试所有的可能性。


你需要在一个子模块中调试一个问题,它不需要很多其他模块。


如果有一个即插即用的功能,你可以简单地停用它们,避免运行那些不需要的模块所花费的时间。

6. 相信人,而不是他们的代码

在现实世界的编码中,最重要的技能之一就是防御性编码。


防御性编码是一种以预测可能的失败点为目的的编程方式。


当你是一个大型项目的一部分时,你将会和很多其他的开发者合作,你将不得不创建具有外部输入的模块,这些外部输入将是原始数据本身或其他模块的处理输出。


我们需要预料到人为错误和现实世界噪音的可能性,并尝试处理它们。


我们的想法是,我们的解决方案不应该崩溃,如果你的模块无法运行,你应该记录错误并继续。


特别是当我们在处理 AI 项目时,由于 False positives,一些模块的失败是意料之中的,这并不意味着代码应该终止,这时候就需要你对这些报错点进行预估,然后做出适当的处理。


因此,做好异常处理是非常关键的一部分。

7. 也不要相信自己的代码!

这个不用多说,我们是人,人是容易犯错的。


无论你是多么优秀的编码员,都要时刻接受自己犯错的可能性。


一旦你完成了一个模块,休息一下。做一些别的事情,然后回来看看你的代码。


你会惊奇地发现,你可以很容易地找到刚才从未想到的错误和优化。


因此,这也体现到代码评审的重要性。


我一直践行一个原则:


提升代码质量最有效的途径就是:多看别人的代码,多让别人看自己的代码!

8. 不要对你的代码产生感情!

当你花了大量的时间进行头脑风暴,学习新技术,解决大量的问题之后,你往往会对它产生感情,因为它是由你的创造力和智慧创造出来的东西。


诚然,这种激情和创造力会让你写出更好的代码,解决复杂的挑战,但也有一些弊端。


你去向你的客户过度解释你的算法之美,而客户并不真正关心这些。


在一个不断发展的商业场景中,任何事情都可能在一天之内发生变化。你会被要求放弃过去一年的一切工作,开始着手一个新的项目,而对你的代码产生感情会让这一切变得困难。


这听起来可能很傻,但这是实实在在的事情,即使在这个行业工作了三年多,我有时还是会因为这个问题而挣扎。

9. 只能,追求完美

最后,要接受这样一个事实:完美是无法实现的,只能追求。


无论你觉得今天写的代码有多好,如果你会在一个月后看它,你可以想到很多方法让它变得更好。


但只要你追求完美,就会达到卓越的境界。

10. 结语

我在这篇文章中讨论的大部分观点不仅适用于编码,也适用于生活。


就像乔布斯说的那样:


每个人都应该学习电脑编程,因为它教你如何思考。



干货推荐

为了方便大家,我花费了半个月的时间把这几年来收集的各种技术干货整理到一起,其中内容包括但不限于 Python、机器学习、深度学习、计算机视觉、推荐系统、Linux、工程化、Java,内容多达 5T+,我把各个资源下载链接整理到一个文档内,目录如下:










所有干货送给大家,希望能够点赞支持一下!


https://pan.baidu.com/s/1eks7CUyjbWQ3A7O9cmYljA(提取码:0000)

用户头像

Jackpop

关注

还未添加个人签名 2020.09.16 加入

公众号:平凡而诗意,微信:code_7steps,全网粉丝超20万,技术进阶、优质资源、实用工具,欢迎关注!

评论

发布
暂无评论
10条让开发者受益终生的编码原则