提高代码阅读能力的 7 种方法

2017 年 10 月 14 日 CSDN Bazlur Rahman

点击上方“CSDN”,选择“置顶公众号”

关键时刻,第一时间送达!


作者丨A. N. M. Bazlur Rahman 

译者丨无阻我飞扬


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


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


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


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


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


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


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


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


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


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


登录查看更多
0

相关内容

【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
56+阅读 · 2020年6月26日
【ACL2020-伯克利】预训练Transformer提高分布外鲁棒性
专知会员服务
19+阅读 · 2020年4月14日
【WWW2020-微软】理解用户行为用于文档推荐
专知会员服务
34+阅读 · 2020年4月5日
【书籍推荐】简洁的Python编程(Clean Python),附274页pdf
专知会员服务
179+阅读 · 2020年1月1日
我是怎么走上推荐系统这条(不归)路的……
全球人工智能
11+阅读 · 2019年4月9日
文本分析与可视化
Python程序员
9+阅读 · 2019年2月28日
说说我的老同事,前端大神程劭非
余晟以为
17+阅读 · 2019年1月14日
我的if else代码纯净无暇,一个字也不能简化
机器之心
3+阅读 · 2018年12月28日
10行代码实现目标检测,请收下这份教程
资源 | 25个深度学习开源数据集
人工智能头条
4+阅读 · 2018年4月22日
Python为啥这么牛?
Python程序员
3+阅读 · 2018年3月30日
干货|浅谈强化学习的方法及学习路线
机器学习算法与Python学习
16+阅读 · 2018年3月28日
牛逼的数据科学家应该具有的8个习惯!
物联网智库
5+阅读 · 2017年12月3日
Compositional Generalization in Image Captioning
Arxiv
3+阅读 · 2019年9月16日
Arxiv
4+阅读 · 2018年7月4日
Arxiv
21+阅读 · 2018年5月23日
VIP会员
相关资讯
我是怎么走上推荐系统这条(不归)路的……
全球人工智能
11+阅读 · 2019年4月9日
文本分析与可视化
Python程序员
9+阅读 · 2019年2月28日
说说我的老同事,前端大神程劭非
余晟以为
17+阅读 · 2019年1月14日
我的if else代码纯净无暇,一个字也不能简化
机器之心
3+阅读 · 2018年12月28日
10行代码实现目标检测,请收下这份教程
资源 | 25个深度学习开源数据集
人工智能头条
4+阅读 · 2018年4月22日
Python为啥这么牛?
Python程序员
3+阅读 · 2018年3月30日
干货|浅谈强化学习的方法及学习路线
机器学习算法与Python学习
16+阅读 · 2018年3月28日
牛逼的数据科学家应该具有的8个习惯!
物联网智库
5+阅读 · 2017年12月3日
Top
微信扫码咨询专知VIP会员