成为一名更好的程序员:如何阅读源代码

简介:

成为一名更好的程序员:如何阅读源代码


阅读源代码有许多益处。你会发现新的架构construct和库,与其他的代码维护者产生共鸣,但最重要的是学会如何组织代码,避免因内部极其复杂而变得不可维护。

但是也有一个不好的地方,那就是阅读源代码太困难了。每当我看到一个新的代码库code base时,这种让人眩晕的感觉就充斥了我的大脑。我的内心告诉我压根不想趟眼前这趟浑水。

这是(希望是)正常的反应。当我们的大脑接触过多的新东西,就会产生排斥。造物主赋予我们的这台强大的模式匹配机器根本找不到规律。所有的抽象abstraction都是之前没见过的,类的名称也毫无印象。程序又到底是从什么地方开始执行的?

对此,我能给出的一般性建议如下:1. 寻找并建立自己能够理解的初步基础,通常就是主要的入口点main entry point。2. 从这个基础开始,逐步探索主要功能。3. 记录下自己的见闻。

从头开始

窍门就是给自己一个起点。我是这样做的。我通过-h选项运行程序,并调用help命令。之后我复制其中一条help文档字符串,以此为检索词搜索一遍代码库,找到这个帮助文档所在地方。通常情况下,调用help命令之后你会发现离程序的主入口点很近了。

辨明轮廓

找到主入口点之后,我会运行几个文档中提供的示例。然后,我会试着追踪主要的代码块,大致了解下每个部分是如何连接起来的。

我会问自己,是否存在一个管理程序,负责调用一堆帮助函数和类?是不是有一些类是平级关系,相互之间轮流交换控制权?是不是有一个程序逐步执行的主任务队列?

了解全局有助于你理清小细节。如果你没有理解程序的主流程就闷头读下去,那你很可能会被细枝末节搞得焦头烂额。

勤做笔记

我习惯直接在代码中做笔记。做笔记的时候,我会使用特殊的注释符(例如,使用#=>,而非常用的#),这样可以将我自己的笔记与原作者注释区分开来。

如果碰到巧妙的技巧、不易理解的流程、编程架构construct的漂亮使用方式或者是其他任何你想牢记的内容,务必要做笔记。如果你读不下去了,你也可以做个记录,提醒自己之后要回去再读看不懂的部分。

通过写下你的思绪,你实际上是在把那块代码变成你自己写的。慢慢地,你就会开始在工作中自然地用上新掌握的那些架构construct

融汇贯通

学习编程,是一个反复读代码和写代码的持续过程。只要你愿意接触不同的风格、代码,最终你会形成自己的独特视角和思维。

本文来自云栖社区合作伙伴“Linux中国”

原文发布时间为:2013-04-02.

相关文章
|
设计模式 JavaScript 前端开发
|
JavaScript 程序员 API
程序员为什么会在开发中阅读源码?
作为程序员的大家想必都会在开发的时候,去阅读源码。在实际开发中,开发者经常需要阅读和理解源代码,阅读源码是一种非常有用的技能,它可以帮助程序员更好地了解代码、解决问题、学习新技术和提高编码能力。阅读源码的过程实质上是对软件构建技术和架构深度的一种持续学习和理解。阅读源码可以揭示代码的内在逻辑,这被看作是对技术深度理解的一种体现,它能提高我们对技术的理解程度。结合阅读《Node 中的 AsyncLocalStorage 的前世今生和未来》这篇文章之后,我深刻体会到了作为开发者阅读源码的重要性和必要性。通过阅读这篇文章,我对 AsyncLocalStorage 的实现原理和使用方式有了更深入的理解
235 3
程序员为什么会在开发中阅读源码?
|
设计模式 程序员 测试技术
阅读开源项目源代码的方法与心得
阅读开源项目源代码的方法与心得
110 0
|
敏捷开发 算法 Cloud Native
面试中的代码写作:如何撰写清晰、高效的示例代码
面试中的代码写作:如何撰写清晰、高效的示例代码
107 0
|
缓存 算法 安全
程序员写代码为什么要阅读源码?
阅读一篇技术文章,畅聊一个技术话题。本期文章推荐的是《Node 中的 AsyncLocalStorage 的前世今生和未来》,一起来聊聊开发者阅读源码的这件事。阅读源码的过程实质上是对软件构建技术和架构深度的一种持续学习和理解。阅读源码可以揭示代码的内在逻辑,可以对技术深度的理解,也能提高对技术的理解程度。然而,仅仅阅读源码并不能代替实践操作,因为通过实践,可以更加全面的理解代码的深度和进展。
156 1
|
消息中间件 设计模式 缓存
怎样更好地阅读源码?
最近,为了提高团队成员技术水平,考察了大家源码阅读情况。作为第一期任务,选择了spring框架,范围是spring-beans,spring-context,spring-core,以及spring-web。考核方式为:了解spring框架作用、核心概念,并选择感觉最重要的几个类进行详细阐述。
110 0
|
人工智能 JSON 搜索推荐
|
程序员
程序员,如何写好文档?
程序要要不要写文档?为什么要写文档?如何写好文档,讨论如下。
4889 0
|
前端开发 Java 数据库连接
阅读《不止代码》之心得分享
阅读链接为:https://102.alibaba.com/downloadFile.do?file=1530517140411/Codelife.pdf 强烈推荐读一读 我大致浏览过一遍+重新选了几篇文章细看了一遍,有如下体会。
2123 0
|
人工智能 算法 NoSQL