不会阅读源码?那是因为你还没看过这篇文章

摘要:随着越来越多的公司使用敏捷开发,能够阅读别人的代码比以往显得更重要。这就需要学习一些如何提高这项技能的技巧。本文提供了几种提高代码阅读技巧的方法。

在软件开发人员的职位描述中有阅读源代码。然而,这体验并不总能令人愉悦。不是每个人都喜欢阅读别人的代码,因为他们觉得那很乏味,甚至有时令人感到沮丧。有些案例中,你开始阅读别人的代码,最终会产生一种痛苦的感觉,因为你不能理解这些代码,或者说代码写得不好。大多数开发人员希望把重点放在编写代码上而不是阅读代码上,他们没有意识到阅读代码也是一项重要技能。

可以说,阅读源代码有很多的益处。阅读代码的受益是巨大的。可以把编码与文学相比较。大多数作家在他们写作的时候注重阅读名著。原因是你不能在真空中创造出任何东西(闭门造车)。你必须从不同的来源吸取精华, 在此基础上去工作,才能创造出你自己的杰作。编写代码亦是如此。

要想能写出好的代码,你必须读很多好的代码。通过这种方式,你可以了解其他开发人员是如何思考的,以及如何解决特定的问题的,还可以发现他们的不足之处。你可以从阅读别人的代码中获取不同的想法、风格和模式,让你的知识逐渐增长。

一言以蔽之——代码阅读技巧提高编码能力。

提高阅读技巧有许多方法。在这篇文章中,我想提些许几点。

1.运行代码——是的,这是阅读代码的第一步。这可能不会给你过多关于项目的细节,但是,你将知道如何构建它并运行它,你将了解它使用的库、它所依赖的开发框架等等,这是提高你对某个特定项目理解的好方法。如果你想编写与你正在探究的特定项目类似的自己的软件,你可能会对你应该使用的框架或库有一些想法。

2.找到高层次的逻辑——当你开始阅读一个项目的代码时,你可能会陷入到每一个细节当中。这是有问题的,相反的,你应该专注于高层次的结构。要找到切入点,并从那里开始,大部分的软件项目都有一个主要的方法,就从那里开始。此外,如果这是一个web应用程序,请开始查看不同的包,比如业务逻辑存放在何处、UI代码保存在哪里、控制器在何处等等。大致来说,就是浏览整个项目并获得一个基本的想法,然后问自己想专注于什么地方,就先从那个部分读起。你可以不读完整的代码库,而只是读它可能会引起你兴趣的一部分。当你找到你的切入点,你可以通过方法调用,看它引领你到何处,从而了解项目的业务逻辑。

3.使用/了解工具——有很多工具可以用来阅读和探究源代码,有助于可视化代码。例如,IntelliJIdea工具具有导航源代码的功能,允许你通过单词、单词的一部分,甚至是单词的缩写来搜索。你也应该学习键盘快捷键。用鼠标导航源代码可能会相当枯燥和缓慢,用键盘快捷键可以更快地跳转。你可以快速地从源代码的一部分跳转到另外一部分。

还有一个阅读代码的好软件,叫Sourcegraph,这是由两个斯坦福大学的毕业生创建的,他们是Quinn Slack 和 Beyang Liu,他们在花费时间去查看缺少文档说明的代码以后,决定开发一个工具来帮助他们更好地阅读和理解代码。

4.了解语言/约定——深入了解某个特定语言有助于提高代码阅读技能。每种语言都有自己的一套约定、样式和语法。这些知识帮助你快速地熟悉一个特定的代码。例如,在java语言中,方法名以小写字母开头,而在C#语言中,方法名以一个大写字母开头。知道这个区别可以帮助你从源代码中识别方法。

5.阅读最佳实践/设计模式——你正在阅读的代码,或者它的某个结构,可能看起来很晦涩,或者你可能不熟悉它,这是很自然的。有许多良好的实践和设计模式,人们用它来正确地和最佳地做事。例如,有一种模式称为Singleton,它的构造函数保持私有。你可能会问,究竟为什么有人想保持构造函数私有呢。我一直认为它是公有的,否则,我如何创建一个类的实例。嗯,这背后有一个原因。Singleton模式防止你不止一次地实例化一个类,其中有许多实际的应用案例。如果你了解这种模式,你就不会为此而头撞南墙了。因此,对于某些模式的了解,例如,Gang of Four(Erich Gamma, Richard Helm, Ralph Johnson,John Vlissides软件设计领域的四位世界顶级大师.)有23种有文档说明的设计模式,可以显著地帮助你提高代码阅读能力。

6.代码审查——软件开发是一个非常讲究协作的工作。没有人可以单独构建一个大型的或重要的软件。每个软件都是由一个团队构建的。在一个团队中,每个人都贡献自己的一份力量去塑造这个项目。在项目结束的那一天,每个人的贡献都会合并成一份对用户真正有价值的工作。除了做实际的编码以外,现在每一个团队都有另外一种做法,那就是在进行观察、建议和相互学习时,互相审查对方的代码。这是一个构建代码库知识的强有力的工具,在团队中建立牢固的纽带,提高代码质量,从而减少系统中的错误,并使客户满意。

说到这里顺便给大家推荐一个Java方面的交流学习群650385180,里面不仅可以交流,还有视频资料免费领取,包含Spring、Mybatis源码以及常用设计模式讲解,以及分布式、微服务、性能优化内容,相信对于已经工作和遇到技术瓶颈的朋友,在这个群里会有你需要的内容。

做代码检查,你不得不阅读团队中其他人的代码,最终会提高你的代码阅读能力。

7.临时重构——临时重构也可以帮助您提高代码阅读技能。你可以找取一段长的方法代码,然后不断地把方法细分成多个部分。持续分解,直到你了解这一大段方法代码背后真正的意义。之后,你可以对这些方法做些注释,然后回滚这些更改。

这可以帮助你理解方法的架构,也可以增加你代码重构的知识。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 127,637评论 18 546
  • pdf下载地址:Java面试宝典 第一章内容介绍 20 第二章JavaSE基础 21 一、Java面向对象 21 ...
    王震阳阅读 77,362评论 25 510
  • 次韵纳兰蕙若《梦行云•青青子衿》 候风翠堤上。秋千荡,频顾望。 谦谦细柳,逐波追前浪。 绿丝罗网乌篷挽,邀宾青石巷...
    风音云影阅读 319评论 13 15
  • 都做到19个,比最开始的几个有进步,但是和昨天的个案相比较似乎没有进步,努力吧,继续!
    马洁_99da阅读 13评论 0 0
  • 居医家水果养生知识大全 贫血---葡萄、橘子、番茄、苹果、草莓、樱桃 胆固醇过高---山竹、核桃 高血压---葡萄...
    天空下的一片阅读 47评论 0 0