大牛们如何读源码的最佳因项目需要,看android某模块源码,怎叫一个蛋疼了得,一个类1000多行,一个方法四五百
大牛们如何读源码的
最佳因项目需要,看android某模块源码,怎叫一个蛋疼了得,一个类1000多行,一个方法四五百行,实在是读不懂,有好多巧妙的设计,领会这些东西就很疼了。想请教下大牛们如何读源码的。
[最优解释]
这不是一个好程序员
方法是不用读的,你写的代码,你告诉我,这个方法作用是什么,我尽管调用!
( 输入的变量 的控制作用
----返回值)
你要我读懂,
我可以自已写出来了,花的时间更少
[其他解释]
mark,一直用的Source Insight.
vim + ctags + taglist没用过,学习了。
[其他解释]
vim + ctags + taglist
不要一气看完整个类,追踪某一个方法
[其他解释]
我就是怕这个,所以一般不读人家的代码。。。。。
除非有人给我讲,或者文档很详细。。。
读人家代码什么的最讨厌了
[其他解释]
我果然还是太低端了,这3个东西都不知道。。。
求讲解
[其他解释]同求(回复内容太短了)
[其他解释]1/2广度优先+深度优先
[其他解释]每个人看源码有他自己的方式!
如果为了读源码而去读源码那么我觉得你会非常痛苦, 因为可能你是没有目的的去读! 一个类少则几百,多的几千行, 看下去要死人的!
在你遇到某些问题需要跟源码去解决的时候,源码里面去翻你需要的那部分,这样读起来会比较轻松点, 每次遇到问题找一部分, 而且同5L说的,每次钻一个问题就钻深一点! 当然找到需要的源码是要对源码的结构很了解的!
我读源码没有用1L说的工具, 就导到eclipse里面
[其他解释]我也觉得这样的方法比较有效果,如果全看的话,感觉看完了好多又忘记了,看的糊里糊涂的。
[其他解释]找个工具,先把代码生成个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
[其他解释]但是source insight 好像只支持JAVA,对于Android的还有些功能没法追踪,你用的是哪个版本啊?
[其他解释]source insight 看内核源码没问题 怎么可能只支持 java 哪个版本都没问题的
[其他解释]一年小菜鸟,从来不读源码。
[其他解释]这。。。我从没听说只支持JAVA的source insight。。。
[其他解释]怎么生成? 我是自己画的,高手,告诉我吧,太累了
[其他解释]用Source insight
[其他解释]有这么犀利的工具啊?分享一下吧~~~
[其他解释]Linux也可以用Source insight的
[其他解释]我去,一个类这么大,这明显不是什么好的例子啊。
[其他解释]我的意思是,在Linux下首选vim + ctags +taglist
[其他解释]有道理加个精吧!
[其他解释]一般用source insight看代码,用meld比较,写的话还是比较喜欢vi
[其他解释]跟着写个程序,从MainActivity开始,你试试,对你绝对有好帮助呵呵
[其他解释]我来学习一下
[其他解释]学习了,下下来看了看,不会用
[其他解释]把类new出来。看公共接口。
设计不好的代码,具体根踪一下算了。
看了一下楼主的介绍。android系统的代码这么垃圾。
[其他解释]不懂。。。。。。。。。。。。。。
[其他解释]该回复于2011-08-26 09:58:42被版主删除
[其他解释]该回复于2011-08-24 10:03:41被版主删除
------其他解决方案--------------------
学习。
[其他解释]俺是先大概浏览然后分类去读了。
[其他解释] 路过
[其他解释]vi写代码比source insight好用吗?那些方面比较好,想学习下。
[其他解释]了解。
[其他解释]看看大家经验
[其他解释]最佳因项目需要,看android某模块源码,怎叫一个蛋疼了得,一个类1000多行,一个方法四五百行,实在是读不懂,有好多巧妙的设计,领会这些东西就很疼了。想请教下大牛们如何读源码的。
[其他解释]source insight, 记住了,下次用这个看
[其他解释]受教了。。。。
[其他解释]六楼
++
[其他解释]菜鸟,没到读源码的级别~
[其他解释]路过学习~
[其他解释]我也听说是读内核常用工具,对了,去哪找源代码啊
[其他解释]路过!!!
[其他解释]该回复于2011-08-24 10:09:57被版主删除
[其他解释]知道接口,会利用就可以了
[其他解释]Java c c++独行 java我试过 同事用来读内核 c++也应该不出问题,同事看多媒体部分都是c++的
[其他解释]android的代码的确不好读啊,感叹啊
[其他解释]read the fucking source code ----linuz
rtfsc
[其他解释]Mark
[其他解释]调试,根据功能看代码
[其他解释]基本上都是这种阅读模式 ....我估计专家也是这么读的
------其他解决方案--------------------
来学习,顶一下。
[其他解释]哎 。。 根据需要仔细看呗。 多利用eclipse的快捷工具。 比如ctrl+O,ctrl+shift+R 等
[其他解释]luguo.........
[其他解释]先把业务流程搞清楚
[其他解释]呵呵,可能大牛们不读源码。
[其他解释]先把业务流程搞清楚吧。
[其他解释]建议你用SourceInsight.我也在看底层的源码。头疼
[其他解释]学些了。
[其他解释]一直想读源代码,一直没执行,希望以后可以读源代码
[其他解释]一般要有注释的吧
[其他解释]一般要有注释的吧
[其他解释]该回复于2012-08-28 09:12:16被版主删除
[其他解释]学习~ 路过!
[其他解释]+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...
[其他解释]顶,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,用用看。 学习!!
[其他解释]求分哪,
[其他解释]慢慢学习着看 不过很难看啊
[其他解释]菜鸟,来学习滴...
[其他解释]同求同求!~