成为一名更好的程序员:如何阅读源代码
阅读源代码有许多益处。你会发现新的架构(construct)和库,与其他的代码维护者产生共鸣,但最重要的是学会如何组织代码,避免因内部极其复杂而变得不可维护。
但是也有一个不好的地方,那就是阅读源代码太困难了。每当我看到一个新的代码库(code base)时,这种让人眩晕的感觉就充斥了我的大脑。我的内心告诉我压根不想趟眼前这趟浑水。
这是(希望是)正常的反应。当我们的大脑接触过多的新东西,就会产生排斥。造物主赋予我们的这台强大的模式匹配机器根本找不到规律。所有的抽象(abstraction)都是之前没见过的,类的名称也毫无印象。程序又到底是从什么地方开始执行的?
对此,我能给出的一般性建议如下:1. 寻找并建立自己能够理解的初步基础,通常就是主要的入口点(main entry point)。2. 从这个基础开始,逐步探索主要功能。3. 记录下自己的见闻。
从头开始
窍门就是给自己一个起点。我是这样做的。我通过-h选项运行程序,并调用help命令。之后我复制其中一条help文档字符串,以此为检索词搜索一遍代码库,找到这个帮助文档所在地方。通常情况下,调用help命令之后你会发现离程序的主入口点很近了。
辨明轮廓
找到主入口点之后,我会运行几个文档中提供的示例。然后,我会试着追踪主要的代码块,大致了解下每个部分是如何连接起来的。
我会问自己,是否存在一个管理程序,负责调用一堆帮助函数和类?是不是有一些类是平级关系,相互之间轮流交换控制权?是不是有一个程序逐步执行的主任务队列?
了解全局有助于你理清小细节。如果你没有理解程序的主流程就闷头读下去,那你很可能会被细枝末节搞得焦头烂额。
勤做笔记
我习惯直接在代码中做笔记。做笔记的时候,我会使用特殊的注释符(例如,使用#= ,而非常用的#),这样可以将我自己的笔记与原作者注释区分开来。
如果碰到巧妙的技巧、不易理解的流程、编程架构(construct)的漂亮使用方式或者是其他任何你想牢记的内容,务必要做笔记。如果你读不下去了,你也可以做个记录,提醒自己之后要回去再读看不懂的部分。
通过写下你的思绪,你实际上是在把那块代码变成你自己写的。慢慢地,你就会开始在工作中自然地用上新掌握的那些架构(construct)。
融汇贯通
学习编程,是一个反复读代码和写代码的持续过程。只要你愿意接触不同的风格、代码,最终你会形成自己的独特视角和思维。
来源:51CTO
如何写出高质量的技术文章 为什么要写文章?什么是好的技术文章?如何写好技术文章?如果你是一个不喜欢语文、不喜欢阅读、作文很少及格的理科生,想要写好一篇技术文章,请一定要往下看。
每次开发都从0开始,重复造了无数个轮子,或者是把之前的项目抠出来,改吧改吧。但是技术的更新速度太快,甚至还见过现在开发的项目用jdk1.6的,因为老项目用的1.6······ 为了简化项目开始这一步的操作,有了开发eboot的念头,已经有很多前辈开发过类似这样的东西,在这里先感谢一下走在前面的前辈们,但是每个人的都会有一些不同,能给大家提供多一种的选择也就足够了 eboot简介 目前发布一个基础版,适用于中小型项目开发,后续会加入更多功能,以满足大型项目的需求。
相关文章
- 程序员如何优雅地解决线上问题?
- 如何突破测试/开发程序员思维?一种不一样的感觉......
- 哪本书是对程序员最有影响、每个程序员都该阅读的书?
- 程序员如何成为一个风一样的男子!?
- 测试/开发程序员面试该如何谈薪资待遇呢?突破这个坎......
- 从高考到程序员
- PHP程序员如何理解IoC/DI
- 程序员是如何一步一步被诈骗的?
- 【转】国外程序员整理的 C++ 资源大全
- 《.NET程序员面试秘笈》----面试题10 接口和抽象类该如何取舍
- 《Visual Studio程序员箴言》---- 2.3 书签
- 《Java程序员面试秘笈》—— 1.13 使用工厂类创建线程
- 如何表述意愿:程序员离职的那些借端
- 程序员副业之如何利用空余时间从博客中赚钱?
- 程序员2020年新书推荐之 02 软件构架基础-工程方法 《Fundamentals of Software Architecture: An Engineering Approach》
- 程序员眼中的 SQL Server-执行计划教会我如何创建索引?
- 浅谈关于java程序员面试的一些事项
- 聊聊程序员如何学习英语单词:写了一个记单词的小程序
- 一名普通Java程序员的2022的总结和2023的展望