↑ 点击上方蓝字关注我们,和小伙伴一起聊技术!

随着越来越多的公司使用敏捷开发,能够阅读别人的代码比以往显得更重要。这就需要学习一些如何提高这项技能的技巧。本文提供了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. 临时重构——临时重构也可以帮助您提高代码阅读技能。你可以找取一段长的方法代码,然后不断地把方法细分成多个部分。持续分解,直到你了解这一大段方法代码背后真正的意义。之后,你可以对这些方法做些注释,然后回滚这些更改。

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

原文:7 Ways to Improve Your Code Reading Skills

作者: A. N. M. Bazlur Rahman

翻译:无阻我飞扬

长按识别二维码享更多精彩

必读|提高代码阅读能力的七种实用方法相关推荐

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

    https://dzone.com/articles/7-ways-to-improve-your-code-reading-skill 阅读源代码是软件开发人员的工作描述.然而,这种体验并不总是愉快 ...

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

    阅读源代码是软件开发人员的工作任务之一.但是,这种经历并不总是令人愉快的.不是每个人都想阅读其他人的代码,因为他们发现它很无聊,有时令人沮丧.有些情况下,当你开始阅读其他人的代码但最终会因为无法理解或 ...

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

    原文:7 Ways to Improve Your Code Reading Skills  作者: A. N. M. Bazlur Rahman  翻译:无阻我飞扬 摘要:随着越来越多的公司使用敏捷 ...

  4. 是否需要提高代码阅读能力?这有技巧

    阅读源代码是软件开发人员的工作任务之一.但不是每个人都想阅读其他人的代码,有些情况下,当你开始阅读其他人的代码,但最终会因为无法理解或代码写得不好而感到痛苦.大多数开发人员都希望专注于编码而不是阅读, ...

  5. 提高小学生作文能力的几种基本方法

    提高小学生作文能力的几种基本方法 2011年05月10日 习作教学是小学语文教学的重要部分,也是教师教学中的一大难题.这是因为习作是对小学生知识储备.思想认识.语言运用.行文技巧等多方面能力的综合考查 ...

  6. 学生如何提高英文阅读能力和科研写作能力

    提高英语阅读能力 1.关注专业领域顶会或者顶刊的文章.如果时间有限,每周花1小时读读文章标题和与自己研究领域相关的科研论文的abstract即可!这样做可以保证一个学生基本上能够跟踪本领域最重要的发现 ...

  7. html语言单词背不下来,专八词汇背不下来?来看看这七种记忆方法

    专八词汇背不下来?来看看这七种记忆方法 01 结合构词法记忆单词 前缀记忆,英语单词前缀很多. 常用前缀有: anti-(反对,防止),co-(共同),de-(离开,除去),dis-(否定,相反), ...

  8. C库函数qsort七种使用方法示例

    这篇文章是  一楼那个学长写的  C库函数qsort七种使用方法示例 七种qsort排序方法<本文中排序都是采用的从小到大排序> 一.对int类型数组排序 C++代码 int num[10 ...

  9. 10截图时屏幕变大_解锁电脑更多的截屏姿势:Win 10中自带的七种截图方法

    说起电脑截图,我们很容易想到的是微信中Alt+A的快捷方式,但如果我们电脑中没有安装微信却要对屏幕内容进行截图应该怎么办?马上下载并安装微信?没有那么复杂,Win 10就自带了多达七种截图方法,熟悉其 ...

最新文章

  1. 全球及中国6氯5氨基邻甲酚行业深度调研与运营潜力分析报告2022版
  2. OpenWrt——Could not lock /var/lock/opkg.lock: Resource temporarily unavailable.
  3. TianyaDL_4thread天涯帖子下载4线程版
  4. 自学成才翁_仅因为您是自学成才,并不意味着您必须独自学习。
  5. 边缘AI:国内首个高性能神经网络认知+项目实战发布
  6. 没有代码天赋的我,先退出了
  7. ARM S3C2410硬件手册重点
  8. 华为电脑和手机一碰传_华为手机怎么一碰传连接电脑传输照片和文件
  9. 大数据监控平台实践之路
  10. TP5用PHPMailer发送邮件
  11. python中集合的符号_python集合中的操作符有哪些?怎么用?
  12. Go语言path is relative, but relative import paths are not supported in module mode
  13. 基于yolov5的目标检测火龙果
  14. vue element-ui 日期弹出框右侧被遮挡
  15. [0]SWM181-从零开发华芯微特MCU
  16. Python之科赫曲线绘制
  17. vue学习之关于element日历calendar组件中上月,今天,下月的显示
  18. 【034】基于51单片机的HX711电子秤Proteus仿真设计
  19. java中的fun_fun
  20. 毕业论文案例-LDA主题模型实现文本聚类

热门文章

  1. 鼠标辅助点击器(MouseClickAidHelper)
  2. finereport公式帮助
  3. @DateTimeFormat @JsonFormat解决:date时间数据与数据库类型不匹配 数据库返回的数据时差问题
  4. html 模板 单页,单页模板html
  5. 电脑BIOS 设置怎样从光盘(USB优盘)启动
  6. 11 公众号开发 - 获取接口调用凭据
  7. 机器人视觉要使用计算机吗,机器人视觉与计算机视觉有什么区别?
  8. 深入理解二叉树的前中后序
  9. PLSQL(Procedural Language/SQL)
  10. Linux安装Ansible