代码阅读方法与实践---阅读笔记04
代码阅读不是一件容易的工作,但却是一件不得不做的工作,无论是工作的移交,新手的入门或者加入新的项目,都要阅读大量由他人编写的代码。我们可能不止一次地听到过他人的抱怨,与其读其他人的代码,还不如自己去写更轻松。可见,代码阅读任务可能远比实现一个链表或者树形数据机构要复杂困难。但代码阅读也并非完全无章可循。掌握了 一些常见的技巧以及常用的工具之后,能够有效地降低代码阅读的难度,提高工作效率。
要养成一个习惯,经常花时间阅读别人编写的高品质代码。就像阅读高品质的散文能够丰富词汇、激发想象力、扩展思维一样,分析设计良好的软件系统的内部结构可以学到新的框架模式、数据结构、编码方式、算法、风格和文档规范、应用程序编程接口甚至新的计算机语言。阅读高品质的代码还可以提高编写代码的水准。
阅读代码的过程中,不可避免地遇到一些在实践中应该尽量避免的代码。能够快速地从坏代码中区分出好代码是一项有价值的技能;接触一些编码的反面例子有助于提高这种能力。根据:
代码风格;结构不必要地复杂或者难以理解;明显的逻辑错误或者疏忽;过度使用不可移植的构造;缺乏维护。
可以容易得识别出低品质的代码。要选择地阅读代码,同时,还要有自己的目标。要随时准备仔细地研究那些有趣但尚不了解的部分;语言特性。
要注意并重视代码中特殊的非功能性需求,这些需求也许会导致特定的实现风格。对可移植性、时间或者空间效率,易读性,甚至迷惑性的需求都可能导致代码具有非常特殊的特征。
有时,阅读的代码可能来自于完全陌生的环境。但要注意从小型的程序开始阅读,不要立即陷入对大型系统的研究中编译研究的程序并运行它们。这样可以得到即时的回馈,了解代码预想的工作方式,同时还可以获得成就感。下一步就是主动修改代码来检验对代码的理解是否正确。注意要从小的改动做起,逐渐地增大它们的范围。通过积极地介入现实的代码,能够快速从中了解到新的环境的一些基本情况。
另一种积极地阅读现有代码的方式是改进它。软件代码是活的人工制作,它们总是被不断地改进。如果考虑改进它,可能涉及到使用更好的设计或者算法,为某些代码编制文档或者增加功能。开放源码项目中的代码常常没有很好的编制文档;将对代码的理解应用到改进文档上。