首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

大牛们怎么读源码的

2012-12-14 
大牛们如何读源码的最佳因项目需要,看android某模块源码,怎叫一个蛋疼了得,一个类1000多行,一个方法四五百

大牛们如何读源码的
最佳因项目需要,看android某模块源码,怎叫一个蛋疼了得,一个类1000多行,一个方法四五百行,实在是读不懂,有好多巧妙的设计,领会这些东西就很疼了。想请教下大牛们如何读源码的。
[最优解释]
这不是一个好程序员

方法是不用读的,你写的代码,你告诉我,这个方法作用是什么,我尽管调用!
( 输入的变量 的控制作用
----返回值)
你要我读懂,
    我可以自已写出来了,花的时间更少
[其他解释]
mark,一直用的Source Insight.
vim + ctags + taglist没用过,学习了。

[其他解释]
vim + ctags + taglist  

不要一气看完整个类,追踪某一个方法
[其他解释]
我就是怕这个,所以一般不读人家的代码。。。。。

除非有人给我讲,或者文档很详细。。。



读人家代码什么的最讨厌了
[其他解释]

引用:
vim + ctags + taglist  

不要一气看完整个类,追踪某一个方法


我果然还是太低端了,这3个东西都不知道。。。

求讲解
[其他解释]
同求(回复内容太短了)
[其他解释]
引用:
vim + ctags + taglist  

不要一气看完整个类,追踪某一个方法

1/2广度优先+深度优先
[其他解释]
每个人看源码有他自己的方式!
如果为了读源码而去读源码那么我觉得你会非常痛苦, 因为可能你是没有目的的去读! 一个类少则几百,多的几千行, 看下去要死人的!
在你遇到某些问题需要跟源码去解决的时候,源码里面去翻你需要的那部分,这样读起来会比较轻松点, 每次遇到问题找一部分, 而且同5L说的,每次钻一个问题就钻深一点!  当然找到需要的源码是要对源码的结构很了解的!

我读源码没有用1L说的工具, 就导到eclipse里面
[其他解释]
引用:
vim + ctags + taglist  

不要一气看完整个类,追踪某一个方法


我也觉得这样的方法比较有效果,如果全看的话,感觉看完了好多又忘记了,看的糊里糊涂的。
[其他解释]
找个工具,先把代码生成个UML,然后打印出来,然后开始分析,我是这么干的
[其他解释]
http://www.cnblogs.com/west-link/archive/2011/06/07/2074466.html
[其他解释]
source insight 看代码
EA 反工程看uml 类图
[其他解释]
如果是Linux操作系统 用vim + ctags + taglist 
如果是windows     用Source insight

[其他解释]
我也是刚进公司做android的,一开始就看公司代码,由于项目较小,也没文档啥的,我是通过sysout来看代码,然后知道每一个变量是做什么用的. 就差不多了. 
[其他解释]
很少看
[其他解释]
ubuntu wine+source insight
[其他解释]
引用:
如果是Linux操作系统 用vim + ctags + taglist 
如果是windows     用Source insight

但是source insight 好像只支持JAVA,对于Android的还有些功能没法追踪,你用的是哪个版本啊?
[其他解释]
引用:

引用:

如果是Linux操作系统 用vim + ctags + taglist
如果是windows     用Source insight

但是source insight 好像只支持JAVA,对于Android的还有些功能没法追踪,你用的是哪个版本啊?

source insight 看内核源码没问题 怎么可能只支持 java  哪个版本都没问题的 

[其他解释]
一年小菜鸟,从来不读源码。
[其他解释]
引用:
引用:

如果是Linux操作系统 用vim + ctags + taglist
如果是windows     用Source insight

但是source insight 好像只支持JAVA,对于Android的还有些功能没法追踪,你用的是哪个版本啊?

这。。。我从没听说只支持JAVA的source insight。。。
[其他解释]
引用:
找个工具,先把代码生成个UML,然后打印出来,然后开始分析,我是这么干的


怎么生成? 我是自己画的,高手,告诉我吧,太累了
[其他解释]
用Source insight

[其他解释]
引用:
找个工具,先把代码生成个UML,然后打印出来,然后开始分析,我是这么干的
有这么犀利的工具啊?分享一下吧~~~
[其他解释]
引用:
如果是Linux操作系统 用vim + ctags + taglist 
如果是windows     用Source insight
Linux也可以用Source insight的
[其他解释]
我去,一个类这么大,这明显不是什么好的例子啊。
[其他解释]
引用:
引用:

如果是Linux操作系统 用vim + ctags + taglist
如果是windows     用Source insight
Linux也可以用Source insight的



我的意思是,在Linux下首选vim + ctags +taglist      
[其他解释]
引用:
每个人看源码有他自己的方式!
如果为了读源码而去读源码那么我觉得你会非常痛苦, 因为可能你是没有目的的去读! 一个类少则几百,多的几千行, 看下去要死人的!
在你遇到某些问题需要跟源码去解决的时候,源码里面去翻你需要的那部分,这样读起来会比较轻松点, 每次遇到问题找一部分, 而且同5L说的,每次钻一个问题就钻深一点! 当然找到需要的源码是要对源码的结构很了解的!

我读源码没有用1L说的工……

有道理加个精吧!
[其他解释]
一般用source insight看代码,用meld比较,写的话还是比较喜欢vi
[其他解释]
跟着写个程序,从MainActivity开始,你试试,对你绝对有好帮助呵呵
[其他解释]
我来学习一下
[其他解释]
学习了,下下来看了看,不会用
[其他解释]
把类new出来。看公共接口。
设计不好的代码,具体根踪一下算了。
看了一下楼主的介绍。android系统的代码这么垃圾。
[其他解释]
不懂。。。。。。。。。。。。。。
[其他解释]
该回复于2011-08-26 09:58:42被版主删除
[其他解释]
该回复于2011-08-24 10:03:41被版主删除
------其他解决方案--------------------


学习。
[其他解释]
俺是先大概浏览然后分类去读了。
[其他解释]
                 路过
[其他解释]

引用:
一般用source insight看代码,用meld比较,写的话还是比较喜欢vi

vi写代码比source insight好用吗?那些方面比较好,想学习下。
[其他解释]
了解。
[其他解释]
看看大家经验
[其他解释]
最佳因项目需要,看android某模块源码,怎叫一个蛋疼了得,一个类1000多行,一个方法四五百行,实在是读不懂,有好多巧妙的设计,领会这些东西就很疼了。想请教下大牛们如何读源码的。
[其他解释]
source insight, 记住了,下次用这个看
[其他解释]
受教了。。。。
[其他解释]
六楼
++
[其他解释]
菜鸟,没到读源码的级别~
[其他解释]
路过学习~
[其他解释]
引用:
引用:

引用:

如果是Linux操作系统 用vim + ctags + taglist
如果是windows 用Source insight

但是source insight 好像只支持JAVA,对于Android的还有些功能没法追踪,你用的是哪个版本啊?

这。。。我从没听说只支持JAVA的sourc……

我也听说是读内核常用工具,对了,去哪找源代码啊
[其他解释]
路过!!!
[其他解释]
该回复于2011-08-24 10:09:57被版主删除
[其他解释]
知道接口,会利用就可以了
[其他解释]
Java c c++独行 java我试过 同事用来读内核 c++也应该不出问题,同事看多媒体部分都是c++的

引用:
引用:

引用:

如果是Linux操作系统 用vim + ctags + taglist
如果是windows     用Source insight

但是source insight 好像只支持JAVA,对于Android的还有些功能没法追踪,你用的是哪个版本啊?

这。。。我从没听说只支持JAVA的……

[其他解释]
android的代码的确不好读啊,感叹啊
[其他解释]
read the fucking source code ----linuz
rtfsc
[其他解释]
Mark
[其他解释]
调试,根据功能看代码
[其他解释]
引用:
每个人看源码有他自己的方式!
如果为了读源码而去读源码那么我觉得你会非常痛苦, 因为可能你是没有目的的去读! 一个类少则几百,多的几千行, 看下去要死人的!
在你遇到某些问题需要跟源码去解决的时候,源码里面去翻你需要的那部分,这样读起来会比较轻松点, 每次遇到问题找一部分, 而且同5L说的,每次钻一个问题就钻深一点! 当然找到需要的源码是要对源码的结构很了解的!

我读源码没有用1L说的工……


基本上都是这种阅读模式 ....我估计专家也是这么读的
------其他解决方案--------------------


来学习,顶一下。
[其他解释]
哎  。。 根据需要仔细看呗。 多利用eclipse的快捷工具。 比如ctrl+O,ctrl+shift+R 等
[其他解释]
luguo.........
[其他解释]
先把业务流程搞清楚
[其他解释]
呵呵,可能大牛们不读源码。

[其他解释]
先把业务流程搞清楚吧。
[其他解释]
建议你用SourceInsight.我也在看底层的源码。头疼
[其他解释]
学些了。
[其他解释]
一直想读源代码,一直没执行,希望以后可以读源代码
[其他解释]
一般要有注释的吧
[其他解释]
一般要有注释的吧 

[其他解释]
该回复于2012-08-28 09:12:16被版主删除
[其他解释]
学习~ 路过!
[其他解释]

引用:
每个人看源码有他自己的方式!
如果为了读源码而去读源码那么我觉得你会非常痛苦, 因为可能你是没有目的的去读! 一个类少则几百,多的几千行, 看下去要死人的!
在你遇到某些问题需要跟源码去解决的时候,源码里面去翻你需要的那部分,这样读起来会比较轻松点, 每次遇到问题找一部分, 而且同5L说的,每次钻一个问题就钻深一点!  当然找到需要的源码是要对源码的结构很了解的!

我读源码没有用1L说……

+1
[其他解释]
学习了 谢谢 菜鸟泪奔
[其他解释]
jdkaj;ldfjaldkjfldskjf;lakdfj;dskf;dlkfj;ldsjf;asld
[其他解释]
学习 源码还可以这样读
[其他解释]
在公司用ssh看源码那个才叫泪崩啊。只有vim + ctags,没权限装taglist  ,而且C-]有时候跳出来一堆东西。。。 

[其他解释]
额。我还是低调路过接分吧
[其他解释]
不懂啊!!!!!!!!!!!
[其他解释]
该回复于2011-09-19 11:53:31被版主删除
[其他解释]
该回复于2011-09-19 11:53:30被版主删除
[其他解释]
学习,路过。。。。
[其他解释]
我看LINUX源码怎么一个蛋疼了得!各种全局变量,各种的各种!

我的方法是结合工具研究原理。

最终把EXT2 EXT3文件系统搞懂了,但是代码还是不是很清楚!

汗!
[其他解释]
MD,一个函数4,5百行,垃圾代码!
[其他解释]
看看,学习了。。。。
[其他解释]
跟着学习吧
[其他解释]
我也是菜鸟,就过来看看大牛们的方法~~
[其他解释]
学习了 谢谢
------其他解决方案--------------------


Understand series,Understand C/C++/Java/Delphi/Cobol....etc...
[其他解释]

引用:
如果是Linux操作系统 用vim + ctags + taglist 
如果是windows     用Source insight


顶,Source insight
[其他解释]
过来学习
[其他解释]
水平严重低下没看懂多少。。。。。。
[其他解释]
引用:
先要搞清楚这个类是干什么用的,

然后搞清楚类里面的方法是干什么用的。

提出问题,比如说这个方法是如何实现、这个类的某个功能是如何实现的、构造方法为什么要这样写之类的。

然后带着问题去寻找答案。

找到答案后再提出新的问题~

我看代码的方式就是这样的


+1

带着问题去读代码 

就相当与 带着任务去找某个东西一样。。。

不要无目的。。。
[其他解释]
先要搞清楚这个类是干什么用的,

然后搞清楚类里面的方法是干什么用的。

提出问题,比如说这个方法是如何实现、这个类的某个功能是如何实现的、构造方法为什么要这样写之类的。

然后带着问题去寻找答案。

找到答案后再提出新的问题~

我看代码的方式就是这样的
[其他解释]
    所以说...     新手一般非常讨厌没文档, 没注释的大牛.
[其他解释]
学习了~~··············
[其他解释]
还是把原文贴上来吧,看着方便:

要想快速并高效地阅读源码,一定要有好方法,不然看着会挺费劲,当然,用什么方法取决于具体的情况。我就把自己总结的方法给大家show一下,互相交流交流:

1、一边阅读代码一边写注释。这是我用过的最好的方法,对代码理解得更深入,看一些重要代码或者特别难懂的代码时挺有用。更何况,注释也是一种文档嘛。

2、一边阅读代码一边绘制UML。这个方法适用于类之间的关系较复杂和调用层次较深的情况,我一般都是先绘制顺序图,然后为顺序图中的类绘制关系图。

3、通过Debug来跟踪程序的主要执行过程,这样就可以分清主次了,阅读的时候更有针对性。

4、类的快速阅读。先弄清楚它在继承链中的位置,看看它的内部状态,也就是成员变量,一般来说,类的对外接口都是对成员变量的访问、加工、代理等,然后看看它的对外接口,也就是公有成员函数,识别核心的一个或多个函数,这时候你应该可以大概了解这个类的职责或作用了。可能这个类是某个设计模式中的一个组成部分,所以,设计模式的掌握对代码的快速阅读也是很有帮助的。

5、带着问题去阅读。比如想了解android中的消息机制,那么看看Looper、Handler、MessegeQueue这几个类就可以了,其他的不要去看,要不然就跑题了。

  下面列几个阅读源码时所处的情景,在特定场景下用哪些方法:
     不太熟悉业务逻辑,还不是很清楚它是干啥的,可以用3、5。
     代码量很大,有几十万行,甚至百万行,可以用2、3、5。
     你无法看见程序的运行过程,比如没有用户界面,也有可能是无法运行的,可以用3、5。
     设计复杂,用了大量的设计模式,调用链很深,可以用1、2、3、4、5。
     时间有限,没有那么多时间让你看源码,可以用3、5。
[其他解释]
新手,没听说过Source in sight,用用看。 学习!!
[其他解释]
求分哪,
[其他解释]
慢慢学习着看 不过很难看啊
[其他解释]
菜鸟,来学习滴...
[其他解释]
同求同求!~

热点排行