第五次读书笔记—— Robrt C. Martin的《代码整洁之道》
本周我读的书是美国作者Robrt C. Martin的《代码整洁之道》。一周的时间,我主要阅读了本书的前五章,关于整洁代码、有意义的命名、函数、注释以及格式等内容。
书中作者有个观点:优雅和高效。作者说:代码逻辑应当直截了当,叫缺陷难以隐藏;尽量减少依赖关系,使之便于维护;依据某种分层战略完善错误处理代码;性能调至最优,省得引诱别人做没规矩的优化,搞出一堆混乱来。整洁的代码只做好一件事。高效的代码是我们都在追求的,而优雅却往往被我们忽视。当我看到作者对糟糕的代码形容成代码“沼泽”,我不禁想起了在参加robgame比赛和大学生数学建模大赛时,我们组所写的代码——不仅包含了混乱的变量名、各种各样千奇百怪的函数、以及接近100:1的代码/注释比。这些在coding时随意的“天马行空”,让我们在调试时吃了大苦头。到了后来,我们痛定思痛,特意花了整整两天,对我们的算法重新进行了分层和优化,把结构好歹变得清楚了一些,但是在改的过程中,我们不止一次地咒骂编代码时的自己:这写的什么玩意。。。。因此。当我读到书中的糟糕代码的描述,我不仅感到羞愧,同时也越发对这本书感兴趣了。
另外一个很有意思的地方是,这本书的作者在每一章的前面都放了一幅漫画来简要的概述本章的内容。比如第二章—有意义的命名—前,作者放了一幅父母亲费力地思索给孩子起名字的画。看到这,我在付之一笑的同时也体会到了作者的良苦用心。的确,就像在生活中家长给孩子取名字哪个不是要经过细细斟酌的?既要蕴含家长的期望与祝福,又希望叫起来朗朗上口,还要注意将来不能成为别人的笑柄。那么,类比之下,我们在给程序中的变量、函数取名字的时候不也应该考虑清楚吗?事实上,好的变量名,既能给编程者自己带来方便,帮助他们看到变量名就能想起其作用,又会帮助后来的维护者或是其他读者更好的理解代码。对于取名字,作者给出了18点我们需要注意之处,尤其是前面几条如名副其实、避免误导等,对我的日常编程实在是有很大的指导意义,令人颇有醍醐灌顶之感。
同时,值得一提的是关于注释的这一章。我本以为作者会直接讲怎样写注释是好的注释,然而作者却直接当头棒喝:注释的恰当用法是弥补我们在用代码表达意图时遭遇的失败。他强调是一种失败,他的观点是唯一真正好的注释是想办法不去写的注释。诚然,他在后面还是讲了关于写好的注释的要点,前面的话给了我很大的启发,的确,随着代码的修改与优化,我们往往不会立即去更正注释,因为我们一直关注的还是代码本身,而注释上的不准确编译器也不会帮我们指出来,注释往往会失去其作用,我们真正应该花心思在增强代码的表现力上。