荐书小摊-如何写出令人尊敬的代码《Clean Code》
《Clean Code》 这是我工作后读的第一本书,也是想要推荐的第一本。
想写出令人尊敬的代码
程序员是一个技术工种,划分为蓝领,称之新农民工。
既然是技术工种,业内以优秀的开发能力,高效的做事手法,严谨的工作态度作为核心竞争力。
并且根据各项指标会划分为初级,中级,高级,资深程序员,对应着不同的工作内容以及薪资。
工作的第一个年头,一年级的我经常会感叹各个大佬写出的非常值得尊敬的代码(优雅,简洁,易维护...)
虽然在 code review 时经常会对我的代码提出各种各样的要求和建议(挨骂)
但是怎么把代码写好这个问题还是没有完整的认知,苦思不得其解。某天下班就找到大佬咨询 "如何写出令人尊敬的代码" 这一问题。
大佬意味深长的看了我一眼以后,就推荐了这本《Clean Code》,看完之后,深感幸运。
让代码散发着善意
在讲解《Clean Code》的一般原则之前,先看一下几位大佬对此观点的评价:
“Clean code does one thing well.” --- Bjarne Stroustrup (Inventor of C++)
“Clean code is simple and direct. Clean code reads like well-written prose.” --- Grady Booch (Pioneer of OO and UML)
“Clean code can be read, and enhanced by a developer other than its original author.” --- Dave Thomas (Godfather of the Eclipse Strategy)
“Clean code always looks like it was written by someone who cares.” --- Michael Feathers(Author of “Working effectively with legacy code”)
从上面的描述中,不难看出大家对Clean Code这一思想的认同,可以说 “Clean Code 就是心怀爱意地去编程”,让你的程序单纯、简单、美好,当他人读你的程序时,能感觉到“作者的善意”。
编程世界里的名词
“如果要想深挖一个行业,第一件事就是找到有关该行业的 100 个关键词” -- 麦肯锡
《Clean Code》讲解了我当时编码过程中司空见惯却又没有重视的事项,总共分为以下几大类:
命名
函数
注释
Code format
类&对象
数据结构
错误处理
封装
测试
迭代(持续重构)
并发编程等...
这些名词,既是是刚做开发时的我,也能大致知道概念内容。但是在阅读本书之前,我完全不知道应该如何在这些方面做出改进,更别说散发着 “开发者的善意” 比如:
如何跟前端开发更默契的工作解耦
如何使团队开发成员更便捷的使用已存在的接口
如何使测试同学提高测试的代码覆盖率
如何让 BA(Business Analyst) 更精准的验收功能等等

读后感
认真做事
一年级时 leader 告诉我一句话 "程序员需要甄别以及避免玩具代码。每月的工资除以当月的代码行数,便是公司所付的一行代码钱,值不值,开发内心要有数。"
《Clean Code》是作者 “鲍勃大叔” 结合自己几十年的开发经验总结的一套编程原则。“认真做事” 是作者 “鲍勃大叔” 给我的第一印象,读完本书,他使我第一次明白认真做事的差距,
一盘炒饭,一把剪刀,一个手工品,一段代码... 同样的物品,价值可能相差百十倍。完成同样一个需求,公司愿意给不同的人支付不一样的薪水,背后的原因就在于此。
持续迭代
我大概是花了3周的时间阅读本书。读完之后,其实并不能记住书中描述的所有注意项。依旧是上面那位 leader 指导我:"搞技术,建立知识索引很重要。"
简单来说,要先创建自己专业的知识体系,可以不会用,但是不能不知道。需要用到的时候,再专项去实践。这个道理可能很多技术人都明白。
我自己从"建立索引" 引申出了一个观点 ”但凡我做不到,认为无法完成的事务。世界上一定有办法做到,只是我的索引(知识体系)没有涵盖到“
正如在阅读本书之前,我并不知道如何优化自己的代码一般。这个观点推动着我持续迭代自己的索引,补充自己的知识体系,并帮助我不断提升代码质量。
有趣的规则
代码质量与整洁度成正比
程序员花费在读代码上的时间通常要10倍于真正编写代码上的时间,也即Writing vs. Reading的比例大概是1:10
优秀的代码大部分是可以自描述的,好于文档和注释
代码大部分时候是用来维护的,而不只是用来实现功能的
大部分项目都不是朝生夕死的短命鬼,代码实现是写给身边的队友和自己看的,需要长期维护,不能应付了事。