『壹』 如何阅读开源项目代码

基本功什么的就不在此赘述,进入正题
1.运行
如果是一个工程的话,建议首先自己运行起来。只有运行起来看到效果之后才方便之后打断点DEBUG调试。
过程之中也许涉及到各种环境啥的搭建,可能过程很苦逼,很耗耐心和意志。总之,没有什么困难能够阻碍你,如果你真的想要去做的话。
2.入口点
找到程序的入口点,方便跟进。算是毛线球暗藏的那个线头,找到之后只管拽就肯定能拆解。
3.把对的改错,再想办法绕开
个人没有实践过,不过日常开发过程中倒是经常碰到把对的改错了。纠错再改正的过程确实能够让自己对系统有更一步的了解,并且记忆深刻。
4.模块化阅读
将整体系统划分成不同的模块,再逐个解决。此处的意义不是具体一个项目功能模块的意思,而更倾向于在抽象一层理解,如网络层,缓存层,持久化层……
5.个人化
换了一个词表示“使用”,自己动手去使用,去实现,去架构。只有这么做了才能真正体会到自己哪里还不会。
6.跟“人”沟通
其意义很重要,书籍上确实东西能够起沉淀很多有意义的东东,但是很多实际使用过程中遇到的问题还需要向大神请教,途径包括公司资源,包括外网论坛博客啥的。
以上主要是提供一个思路,经过自己这段时间的实践,发现确实能给黑暗中的自己一个摸索的方向,并且有一定的效果。
另外还有几点,不知道插在哪一步进行说明,就没有总结在下面了
多思考,为什么要写成这样,这样写有什么好处。
注重Demo&Sample,很多使用上经验可以学习。
阅读代码时最好分两遍进行阅读,第一遍主要熟悉代码结构,了解流程,划分模块;第二遍再注意细节,分模块的进行熟悉。
一定要记住的是,回味,总结,沉淀。只有转化成为自己理解的东西之后,才能算学会了,时间才没白费。
最后说一下,尽可能的在代码中找答案。跟别人沟通(当然除了跟代码作者本人沟通外)只能进行经验的交流,别人所输出的是经过他的理解和加工之后的,不见得一定是对的。

『贰』 如何阅读开源代码

通过阅读开源代码,可以学习其中的框架和模式、代码技巧、算法等。但是经常有些人拿到开源代码以后不知道如何下手,这里分享一下我的一些经验。
1.拿到代码以后编译运行它,了解它干什么的,实现了功能。
2.从入口点开始阅读,按照流程,了解这个软件是怎么运行起来的。
3.从整体上观察这个软件是有哪些模块组成的,最好能画一画图。
4.修改软件的功能,并且能够调试它。不能仅仅停留在阅读代码上,一定要改代码,这样才能增加对开源代码的理解。
5.做笔记,把这个开源代码实现的功能,实现方式、设计框架、模块组织、以及代码技巧等记录下来。

以上,这些仅仅是我个人的经验,希望可以帮组到您。

『叁』 如何阅读程序源代码

阅读源代码的第一个工具,就是你手中的code base。把它编译出来,运行它,加log,试着修改一些数据和代码,看看有什么变化。

第二个重要的工具就是debugger,而debugger最重要的功能是获取call stack。在你感兴趣的use case里pause一下,在你不知道有什么用的函数里加个断点,显示出来的call stack都能让你对系统有更清晰的认识。

一个软件系统就是一个小宇宙。别期待有什么高明的文档。要把自己当成探求自然真理的物理学家。

必须找好切入点。你要解决什么问题。是要fix bug;还是要把这个系统和其它模块集成;还是要增加新功能。物理学家没有上来就研究整个宇宙的,必须选好分支。
如果你有一个猜想,但是又和你的目标关联不太大,那就坚持这个猜想,直到出现明显反例。物理学有很多这样的例子,和数学不同,为了旁支猜想投入过多研究是不明智的。
如果有明显证据证明你的某个旁支猜想大错特错,你就要放弃主要目标,暂时把解决旁支猜想作为主要目标。比如,你本来以为某个结构是LRU的cache,结果发现怎么做都不对,那就先放弃原来的目标,专门研究这个结构的用途。
对于旁支猜想的不断切换,要做好自己的task stack保留。在旁支猜想解决之后,要根据结论尽快回到上次中断的任务。

复杂的软件系统更像一个动物,待久了你会了解它的脾性。有些是通过逻辑,有些是通过感觉。玩车的尚且有这种感觉,我们玩的东西比车复杂上万倍,就更不能对它缺乏感情投入。(这也是我不爱做企业开发的原因,我不爱养个爬行类当宠物,还是猫猫狗狗的亲切。)

『肆』 如何阅读源代码

《通用源码阅读指导书》易哥 写的一本书

『伍』 为什么我们需要阅读优秀开源软件代码

所幸的是,有相当多这类程序都开放了源代码——它们也正是因此才得以在众多聪明头脑的协作下逐步达到今天的高度。开放源代码,这意味着我们可以拆开每一颗螺钉,走近每一个零件,观察每一个动作,触摸每一根链条,转动每一个齿轮(阅读代码,运行,调试)。我们可以像孩子一样拆散它们,然后再拼到一起,可以摆弄它们的位置(修改)。在清楚一些时,我们可以把其中的一些零件用自己制作的替换掉(实验),还可以把零件卸下来安在自己的机器里(复用)。
当然,最初我们很可能会被慎密而复杂的结构搞晕,但一旦开始渐渐理清它们的关系,我们会首先为那些按高品质行业标准打造的标准零件的规范赞不绝口(代码规范,软件包构建,接口设计),接着为那特殊零件赏心悦目的精湛工艺而惊叹(语言技巧,数据结构/算法的设计、选择和实现,细节处理),然后为它们各司其职的明确分工和合理的安排而心服口服(模块化设计,接口设计,代码组织结构),其间我们会不断得到零件上友好简洁的标注的帮助(注释和可读性)。我们甚至会偶然为匠人们的幽默而捧服。有时我们会感到,那些聪明的家伙在对我们微笑,用带着一点挑衅却又友好的语气说道:"嘿,怎么样?我的代码写得不错吧?你能写得更好么?"
后来,我们会发现诸多不完美,其中有些被证明是我们理解的问题,但有些确实需要改进,那么就动手吧,这时,我们可以恭喜一下自己——我们已经跟上了这些聪明黑客的节奏,并且开始融入其中。
如果我们对历史版本进行考古,会有更多发现,我们会看到今天我们面前的强壮青年经历过怎样的幼稚,看到他的成长轨迹。这时将会明白,罗马不是一天建成的,更不是一个人建成的,那些代码中包含的是大量黑客多年积累的努力和智慧,每一次修改和重构都吸取了上一版本的教训。今天宏伟光鲜的罗马城下,压着无数旧代码的尸体,而大师们也是在经历这些风雨后才成为大师。所以,优秀的开源软件代码所示范的手段,是历史之浪淘出的黄金(也有些带有古董的痕迹,但不影响代码的质量)。如果我们不去吸取这些血泪浇灌的营养,或许就免不了重流前人流过的血泪了。
总结一下,通过阅读优秀的开源软件代码,我们能够
可以修改、重写后通过运行、调试进行实验
找到可复用的代码用在自己的项目中
学到代码编写、软件包构建等工程规范
学到语言技巧,数据结构/算法的设计、选择和实现,以及细节处理方法
学到模块化设计方法和良好规范的代码组织方法
学到良好的编程风格和注释规范
理解编程理论和原则
了解软件发展规律,吸取前人经验教训
对它们进行改进当然,还有最不重要,也是最重要的:满足好奇心

『陆』 如何阅读 Java 开源代码

  1. 准备好环境,比抄如安装好Eclipse,IDEA等你喜袭欢的集成开发环境

  2. 准备好Maven环境

  3. 创建一个项目,把你要研究的开源项目pom引入进来

  4. 使用maven把源代码下载下来

  5. 写一个简单的例子使用开源代码

  6. 分析从启动开始,断点调试,看看调用了哪些方法,每个方法是怎么实现的

  7. 所有方法都断点了一遍,你在这个过程中实际上已经了解了开源代码是怎么实现具体功能的了