作为程序员,日常工作的大部分时间都是花在一些“基本”的事情上,像是给变量、函数或类命名,写循环以及在函数级别解决问题。并且这其中很大的一部分就是阅读和编辑(修改)已有的代码。因此,代码是否易于理解就显得尤为重要。《编写可读代码的艺术》(The Art of Readable Code)这本书从命名,排版,注释,循环以及如何拆分长表达式等方面阐述了编写易于理解代码的技巧。这本书除了教会你这些技巧之外,更重要的是它让你对“代码的可读性“另眼相看。也许你从来都未曾意识到“代码的可读性”会如此的重要!
第一章、代码应当易于理解1、是什么让代码变得“更好”?
当我们面对两段相同功能而编写方式各异的代码时,如果判断那种方式更合适?或者说那种编写方式更易于理解?那就是第二个关键思想,即可读性基本定理:“代码的写法应当使别人理解它所需要的时间最小化。” 当然,也许不同的人,理解不同的代码所需要的时间也不同。因此对这个观点或许是一个仁者见仁智者见智的问题。但是,我们依然需要通过“大多数”这个方向来判断代码应该如何编写。
2、总是越小越好吗?
代码要精炼简洁。不错!但有一个前提就是,不能影响可读性。那么,可读性又如何判断?答案在上面已经给出:时间最小定理!例如,
- // Fast version of "hash = (65599 * hash) + c"
- hash = (hash << 6) + (hash << 16) - hash + c;
一条注释虽然增加了代码的长度,但是它可以让读者更快的理解代码。如果没有代码上面那条注释的话,估计这条代码足够你研究好一阵子。
3、理解代码所需要的时间是否与其它目标有冲突?
不会!经验表明,提高代码可读性的同时往往会把代码引向好的架构其也更容易测试。而代码的可测试性是高质量代码的另一个重要属性。真可谓意外得到的收获!
4、编写可读的代码——难在哪里?
要想编写出高可读性的代码,就需要我们经常的问一问自己:其他人阅读我的代码会遇到困难吗?这需要我们在编码时花费额外的时间,更需要我们打开大脑中从前在编码时可能没有打开的那部分功能。但如果你接受了这个目标,那么可以肯定,你将成为一个更好的程序员。你的代码缺陷会更少,周围的人也爱用,你将因它而自豪。好了,让我们开始吧!
第一部分 表面层次的改进
不要忽视了不重要的表面,“表面”的东西能让你的代码更“体面”。这一部分的内容十分通俗易懂,你简直可以不费吹灰之力就广泛的应用起来,值得我们认真学习并立即实践。你将发现:这些知识和技巧会影响你代码库中的每一行代码。
第二章 把信息装到名字里
无论是变量、函数还是类(包),它们的名字都是一个小小的注释。因此,选择一个好的名字不是无所谓的事情,而是一件非常重要的任务。俗话说,万事开头难!长期来看,你会从这个好的开始受益良多。
1、具体的说,有哪些技巧可以提高命名的贴切度或者说正确性?
关于这个问题,作者给出了以下几条提示:选择专业的词:有经验的程序员都知道,命名并非一件容易的事,尤其是取一个见名知义的名字。遇到困难时,我们要勇于寻求帮助,从字典、同事、朋友或者是专业领域人士那儿获得帮助。
找到更有表现力的词:英语是一门丰富的语言,有很多词(近义词)可以选择。作为非英语母语过度的程序员来说,英文水平也是影响我们命名水平的障碍之一。对于程序员来说,英语和你的编程语言一样重要。学习吧!英语能让你走得更远。
避免像tmp和retVal这样泛泛的名字ÿ