写代码的四个境界

2018 年 7 月 2 日 CocoaChina

作为一个软件开发工程师,写代码必然是第一技能。写代码,不应该只是一份工作,而是在为社会创作一件流芳百世的艺术品。艺术创作,就一定会有境界,那么一个人写代码的境界,这儿总结一个简单的从低到高梯度。


“我的代码写完了”


接到任务,便开始和一个生产线上的工人一样,一行一行的写,没有计划,想到哪写到哪,什么代码风格,算法是不是最优,别人能不能看懂,都不管了。写完了,编译通过了,能运行了,告诉老板,“我的代码写完了”,就匆匆交差。质量怎么样,那是测试的事情。大不了,有了bugs,再来fix。看着快,反反复复,实际上是慢。这是最低层次的境界。


“我的代码写好了”


接到任务,首先计划一下,有几个模块,有几个功能,然后按照规定的代码风格,一个一个模块的完成,也会尝试选择好的优化算法,会加上注释以便自己和别人能够读懂和维护,写完后自己会多看几遍有没有什么问题。毕竟人很难一次把事情都搞对,检查是必不可少的一个环节。编译的时候,会注意每一个warnings,fix它们。也会自己想几个测试用例跑跑,感觉没有问题,就提交,告诉老板,“我的代码写好了”。这个境界高了不少。


“我的代码能用了”


接到任务,除了按上面的方式来写代码。还会在写代码的过程,加入各种白盒测试,也就是说,每写完一个函数,一个功能,会写一段单元测试,来验证自己的代码在各种正常和边缘情况,都能正确无误的运行。同时还会注意测试的代码覆盖率,也就是说,每一行代码都会有测试场景跑过。如果是使用了别的服务,会将别的服务mockup起来,让自己的系统能正确的运行。对于之上的模块,系统,有集成测试,有回归测试。虽然在写代码的过程中,加大了工作量,但是这样的代码,出错的概率明显减少,中间需要的来来回回修复的次数明显减少,实际上是减少了总的工作量,节约了项目的时间。这是一种负责任的态度,也是一个工程师本应具备的基本素质。这个境界就很高级了。


“我的代码还在用”


代码就像艺术品,好的艺术品,流芳百世,好的代码,也应该如此。那么,工程师对代码也应该像创作一个艺术品,深思熟虑,精雕细刻,期望它们能够在产品中永生下去。当你老了的时候,还能骄傲的告诉人们,“我的代码还在用”。这样就要求代码写的好,写的质量高,考虑全面,运行效率高,几乎没有bugs,而且容易读懂,容易维护,容易使用,千锤百炼。举个例子,如果实现一个功能,有不同的算法,会写代码实验不同算法在此场景下的性能,对比优缺点,选择一个合理高效的算法使用。这样的工作,除了后人发明了更好的算法,否则是不容易被替换掉的。写代码是一门艺术,写出来的代码就是一个艺术品。这样的境界,是每个程序员应该追求的最高目标。


只有心底里有“对自己的代码负责”的思维,才能达到最高的境界“我的代码还在用”。而“对自己的代码负责”应该是每一个工程师的基本素质。这样,写出的代码,才有可能成为一件艺术品,流芳百世。


“What is your legacy?”,代码,可能会是程序员给社会留下的一份资产。

登录查看更多
0

相关内容

艺术迄今依旧没有公认的定义,目前广义的艺术乃是由具有智能思考能力的动物,透过各种形式及工具以表达其情感与意识,因而产生的结果。艺术不只存在于人类社会中,也存在于其他相对高等的动物。
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
194+阅读 · 2020年6月29日
《代码整洁之道》:5大基本要点
专知会员服务
49+阅读 · 2020年3月3日
专知会员服务
41+阅读 · 2020年2月20日
Transformer文本分类代码
专知会员服务
116+阅读 · 2020年2月3日
【书籍推荐】简洁的Python编程(Clean Python),附274页pdf
专知会员服务
180+阅读 · 2020年1月1日
【书籍】深度学习框架:PyTorch入门与实践(附代码)
专知会员服务
163+阅读 · 2019年10月28日
我是怎么走上推荐系统这条(不归)路的……
全球人工智能
11+阅读 · 2019年4月9日
我的if else代码纯净无暇,一个字也不能简化
机器之心
3+阅读 · 2018年12月28日
Python为啥这么牛?
Python程序员
3+阅读 · 2018年3月30日
快乐的迁移到 Python3
Python程序员
5+阅读 · 2018年3月25日
手把手教 | 深度学习库PyTorch(附代码)
数据派THU
27+阅读 · 2018年3月15日
从基础概念到实现,小白如何快速入门PyTorch
机器之心
13+阅读 · 2018年2月26日
Python除了不会生孩子,什么都会
算法与数学之美
3+阅读 · 2017年11月8日
手把手教TensorFlow(附代码)
深度学习世界
15+阅读 · 2017年10月17日
谈谈用户画像
caoz的梦呓
10+阅读 · 2017年8月17日
Meta-Learning with Implicit Gradients
Arxiv
13+阅读 · 2019年9月10日
Attend More Times for Image Captioning
Arxiv
6+阅读 · 2018年12月8日
Arxiv
14+阅读 · 2018年4月18日
VIP会员
相关VIP内容
相关资讯
我是怎么走上推荐系统这条(不归)路的……
全球人工智能
11+阅读 · 2019年4月9日
我的if else代码纯净无暇,一个字也不能简化
机器之心
3+阅读 · 2018年12月28日
Python为啥这么牛?
Python程序员
3+阅读 · 2018年3月30日
快乐的迁移到 Python3
Python程序员
5+阅读 · 2018年3月25日
手把手教 | 深度学习库PyTorch(附代码)
数据派THU
27+阅读 · 2018年3月15日
从基础概念到实现,小白如何快速入门PyTorch
机器之心
13+阅读 · 2018年2月26日
Python除了不会生孩子,什么都会
算法与数学之美
3+阅读 · 2017年11月8日
手把手教TensorFlow(附代码)
深度学习世界
15+阅读 · 2017年10月17日
谈谈用户画像
caoz的梦呓
10+阅读 · 2017年8月17日
Top
微信扫码咨询专知VIP会员