实在、好读、漫画幽默的小书
2012-03-19
接着去年11月份实习时用 kindle 读到 20% 落下的好书,中间隔了几个月...
这本新书的名字也是“The Art of xxx”,很容易让我感觉到这是很严谨不易读的书,那本 TAOCP 是我这种数学能力超弱的人读不了的,而 TAOUP 对几乎没怎么用过 Unix/Linux 的我也比较难理解甚至不知所云。但是这本 Readable Code 却明显不像我先入为主的感觉那般,而是跟其书中让 code 更 readable 一样易读。
这本书容易读是因为作者几乎不用隐喻(Metaphor),也没有那些 DRY 原则(我看全书只是一笔带过一次而已)之类的缩写“术语”,而是用直白浅显的文字表达出来,简单明了。如果这些很适合新手阅读并注意的主题,隐喻过多显然达不到最主要的目的,但本书避免了这种问题,这是本书做得很好的一点。
另外,书中每一章至少有一幅跟主题相关的幽默漫画,在诙谐的同时引起你继续读下去的兴趣,还可能让你更能记住书中提到的那些“KEY IDEA”或具有指导/总结性质的章节名。英文单词也够简单,用 kindle 查一下足够了。
书中不仅用很多代码片段来说明问题,在最后第四部分的“Selected Topics”用比较完整的例子渐进式地讲了“Testing and Readability”和实现一个作者实际的产品代码“minute/hour counter”,后者涉及代码性能和内存消耗,看看作者怎么把整本书的主要方法运用到实践当中去。
我读过的与这本书类似的有《代码大全2》(大部头,面面俱到)和《重构》(这本 Refactoring 也比较好读,不过感觉偏向于“设计”,甚至是设计模式,性能、注释这些印象中没提到)。作者在最后推荐的阅读的书单中也包含了这两本,还有其他经典书。
几处自己觉得有趣的地方:
- 三目条件运算符 ?: 只能用于最简单的情况跟《代码大全 第二版》(Code Complete)一样提倡函数中尽早返回(return),但这里提到其他需要单退出点(single exit point)的情况(例如一些清理工作),已经被析构函数和 try finally 或 Python 的 with、C# 的 using 取代了。
- 别轻易一票否决臭名昭著的 goto,需要仔细研究它,有时候还是有用的,例如 Linux 内核就用到了。
- 代码里多重嵌套时,读代码的人不简单啊,因为要构造一个“mental stack”,然后看到 } 要记得按序“pop”出“mental stack”。觉得这个新词“mental stack”很有意思。
以作者一句话来结束:“Our book is intended to be a fun, casual read.”
p.s. 现在才知道“a.k.a.”是“also known as”的缩写,少读英文资料的悲剧啊,是程序员的从这本易读有用的书开始读原版书,一点点攒起来吧。