已阅读过的书籍中影响排行榜的第三顺位。于三年前翻阅过三次之后,没有再刻意练习过代码规范。
前言
在阅读此书时,我还在从事.NET开发,并且已经阅读了《.NET设计规范》第二版,之所以还会购入这本书,一是因为其作者Bob大叔的名头,二是因为随手翻阅其电子版时给我留下的深刻印象。
两本书基本都是讲述通用规则,但《Clean Code》对代码规范的要求到了近乎变态的苛刻,字里行间可以感受到作者对程序以艺术品般的对待。
下面,让我回想下三年后的现在,它还给我留下什么? 类似尽快返回这样的细节我就不提了。
按报纸的格式排版你的代码
我们阅读一份报纸,总是自上而下,先看标题; 如果对此感兴趣,就集中注意力查看其细节; 如果没兴趣则直接跳到下一个标题,依此进行直到整份报纸结束。
我们在排版我们的代码时也应该如此,高层的代码调用底层的代码,依次向下,先是概要,然后才是细节。
调用者一定在被调用者前面
这一条大部分情况下还是比较容易遵守的,可以帮忙我们形成思维定式,在查找方法引用时,可以直接往下滚,而不需要拉着滚动条上下翻阅。
火车失事
这里我一直很难抉择,被java众捧上天的java8函数式编程(.net3.0就实现了),这种编程方式真是写时一时爽,出个问题你都没法定位到哪个,《Clean Code》强烈不推荐这种链式编程。
但是按《重构》里说的"减少临时变量",又是推崇这种,所以搞得我都精神失常了,现在基本都是现场发挥。
不要双语编程
注释也是一种语言,除非必要,尽量让代码解释自己在做什么。如果方法名已经解释清楚了自己所做的事情,那么用另外一种语言翻译一遍的必要性又在哪里? 接受这种思想的初期,我半年内没给代码写过注释……
变量名的长度
只决定于其是否能准确表达其含义,两百字符又如何? 一堆a,b,c,d你这是打算把维护工作交给上帝他老人家吗?
结语
直接用我现在依然记忆犹新的几句话结束吧。
1. 尊重一下你的技艺吧,用心是最好的品质。
2. 你是否愿意在所写过的代码上署上自己的名字。
3. 开发技术这几十年的发展很大部分都是为了消除重复性代码。