七种提高阅读代码的能力与技巧

21世纪技术官导读:随着越多的公司使用敏捷开发,阅读别人的代码比以住任何时间都重要。本文写的就是关于如何提升此能力的技巧,希望对各位有价值。

读源代码是开发者的份内工作,但是读别人代码别不是令人愉快的事,我想,看文章的很多人都不太愿意读别人的代码吧,因为都觉得很无聊,有时还令人沮丧。

有时候,在读别人写过的代码时,可能我们一时无法理解,或者原来的代码写得不够好,这会让我们感到痛苦。

所以,大多数开发者都希望自己写代码,而不是读别人的代码。殊不知,阅读代码也是开发者一项重要的技能。

阅读别人的源代码有很多好处,收益也会非常大。

我们可以将编码与图书出版做个比较吧。大多数作者在专注写作时,也会阅读其他人的好作品,每个人都不能从真空中创造出任何东西,我们必须吸收来自不同来源的内容,并在别人肩膀上开创自己的杰作。编写代码与出版图书没有任何区别——为了能够写出更好的代码,我们需要阅读更多优秀的源代码。

通过这种方式,你可以深入了解其他开发者的思想,以及他们如何解决特定的问题,也可以发现他们代码中的缺点。

通过大量阅读别人的代码,你可以采用更先进的方法、风格和架构模式,让自己的技术能力和知识不断的增长。

在这里,我们来总结一下提高阅读技能的几点。如下:

1、运行代码

这是读代码的第一步。虽然你还不能全部了解此项目的细节,但我们知道如何构建并运行它,也会了解到它使用了哪些库,依赖的框架等,这对我们提高指定的项目理解是个好方法。

2、找到高级逻辑

当开始阅读一个项目时,我们不可能跳进每个细节。相反,你应该关注高层结构,从入口点开始。大多数项目都有一个主方法,我们就从那里开始。

比如是一个Java Web应用程序,我们可以从研究不同的包开始,比如业务逻辑存放的位置,UI代码的位置,控制器的位置等。基本上,浏览整个项目需要找到主要的想法,然后想想自己想关注的位置或想先读的部分。

我们可能不会阅读整个代码库,而只是对其中的一部分感兴趣,可以从某个方法调用开始,让它带着你开始。

3、使用/了解工具

现在也有很多工具可以帮助开发者阅读和浏览代码,使源代码更加可视化。例如,IntelliJIdea有代码导航的功能,可以通过单词,部分关键字等进行搜索。

我们开发者应该擅用键盘快捷键,可以会让你的工作效率提升很多。

有一个软件叫做Sourcegraph,它对我们阅读代码很方便。它由两个斯坦福大学毕业生Quinn Slack和Beyang Liu开发。开发这款软件的原因是,以前他们曾花了多个小时的时间来搜索那些记录不完整的代码,于是决定构建一个工具来帮助更好地阅读代码。

4、了解语言/习惯

深入了解某种语言有助于提高开发者的阅读代码能力。每种开发语言都有自己的一套规约、样式和语法,这些知识可以帮助我们快速熟悉特定的语言代码。

比如在Java中,方法名称以小写字母开头,而在C#中 ,它们以大写字母开头。

5、阅读最佳实践/设计模式

当我们正在读代码时,有很多看完觉得很模糊,或者干脆看不懂。

这都是很自然的。有很多良好的实践和设计模式可供人们正确使用。比如,使用Singleton模式,其中的构造方法为私有。

你可以会有疑问,为什么有人想让构造函数保密,我一直认为它是公开的,如果不是,我怎么在类中创建实例?

这背后有一个重要原因:单例模式阻止用户多次实例化一个类。如果你通晓了此模式,就不会再撞墙了。

因此,掌握某此模式的知识,比如设计模式有23个设计模式,可以显著帮我们提高阅读代码。

6、代码审查

软件开发是一件高度协作的工作。没有一个人可以单独开发一款大型软件或重要的软件,都需要一个团队来协作创建。在一个团队中,每个人都在同时贡献着塑造着一个项目。当一天结束时,每个人的工作被合并,成为对用户有实际价值的一件好工作。

除了进行实际编码之外,还有一种做法,就是一起彼此 Review 源代码。然后建立一个代码的知识库,在团队中建立牢固的协作关系,一起提高代码质量,从而减少系统bug,让产品体验更好,用户更爽。

7、临时重构

代码临时重构也可以帮完全提高代码阅读技能。在刚开始写程序时,你可能用了一个很长的方法,当可以运行时,接着我们再将这个方法分解成多个部分。继续重复的这样做,直到你发现这个大方法后面作者的意图。

接下来,我们了解并记下该方法的作用,然后回滚后修改,从而帮助开发者更深入理解方法的构造和提高代码重构的核心能力。

作者:Anm Bazlur

编译:高明

来源:21世纪技术官

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180309G1OS8G00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券