前情提要
在前两篇文章中,我们已经明确了 Clean Code 的目的是减少团队成员的沟通成本,今天我将根据自身的经验讲述怎样才能学习编写 Clean Code,这完全是一家之谈,有不对之处,请不吝赐教。
如何提高代码质量
老人的回答
大多数情况下,拿着这个问题去问有经验的人,基本上都会到同样的回答:多读,多写。更具体一些,就是,多读别人写的好的优秀的代码,多自己写代码。可事实上,这个回答是没有用的。很多写不出高质量代码的人,他是感受不到别人代码的优秀的。举一个例子,我曾经在西安参加过一届 Code Retreat 活动,会上每个人都会在迭
代完了之后展示自己写的代码,我看到了很多优秀的设计,收到很多启发。但是,跟我同去几个小伙伴,有两个都表示,不明白为什么别人的代码好在哪里!
看了不懂还是不懂,死磕?
在老人向没有经验的人提出 “多写多看” 的建议时,其实根本没有考虑到对方感受力
的问题,这就像还没有习得投篮基本功之前的樱木花道完全感受不了流川枫高超的投篮技巧一样。你看,如果你没有看过这部漫画,你也大概理解不了我使用这个比喻时所隐含的上下文。
感受力本质上是对话双方话语交集的体现,新人缺乏足够的基本功(或者说上下文和背景知识,本质上我认为是一样的),自然无法理解老人口中的优秀代码到底好在哪里。
期望有一天开窍?
事实上,这个问题不止在学习编程的过程中出现,它遍布几乎所有的学习活动中。想一想,你在刚学习某一种技能的时候,是不是都会很疑惑,很多东西是怎么做到的,很多东西为什么必须那样做而不能用另外的做法。
想一想,你是不是经常听到 “多做,慢慢你就懂了” 这样的话?事实上也真的是这样子的,在到达某个临界状态之后,新人会好像 duang 地一下子开窍了,理解了之前所有不明白的东西。
悟性是不可靠的
要是一直不开窍呢?那你就是没有悟性呗,先天不行!数学学不懂,就是左脑不发达;英语学不懂,就是语言功能不发达;不会画画,手残呗;编程学不会,你是个女生嘛 -_-|| 这样的例子太多太多了,我想说明的是,想要靠悟性来学习人,真的是可以洗洗睡了,别学了。
可是,如果不 "多看多写",新人们还能怎么做呢?
凡事都要讲方法
当下是一个学习方法盛行的时代,是一个鼓吹知识变现的时代,可是不得不承认,学习这件事,本身是有方法论的。只要掌握合适的学习方法,学习就不会是一个靠个人悟性的事情,学习也会变得容易的多。对于编写整洁代码这件事,前人也早就给出了好的方法,当然了,不是阅读 Clean Code 这本书本身。
这就是答案
我看过很多关于如何编写好的代码的书,不得不说,看完之后,很多给我的感觉似懂非懂,并没有得到多少实际的收获。但是,有一本书,彻底改变我对整洁代码的认识,它就是《构建之法:现代软件工程》https://book.douban.com/subject/25965995/ 。
如果想学习提高代码质量,这就是我的答案。
综上所述,Clean Code 这本书,作为新人的你,不读也罢。认真研读 《构建之法:现代软件工程》 吧,你可以从这本书中得到你真正需要的。