《开源思索集》一如何提高阅读源代码的能力

如何提高阅读源代码的能力

开源思索集
@johnniechau 推荐的《代码阅读方法和实践》,是一本好书,我只打算在这里简单地聊一聊自己的经验与思考。

我们先假设一种最恶劣的状况,你被迫接手一个遗留项目,原来做项目的家伙,全都四散逃亡了,不但没有任何说明文档,而且还找不到人,老板给你一段并不宽裕的时间,你得读懂他们的代码,然后接着维护……通常,这是噩梦的开始。

当然,从提高能力的角度而言,这是一个好机会。所以,@刘立 虽然只说了两个字“压力”,我认为的确正中要害!

我们可以用拼图这样的游戏,来做一个比喻。一地的碎片,你如何将他们尽快地拼在一起?

  • 寻找边角的块(除了四边都是凹凸的块之外,其他有一到两条边是直线的块,会少得多,也更容易辨认与拼接。)
  • 将碎块按大的色块分类,从一次查找变成二次查找。
  • 一开始碎块最多的时候,是最困难的时候,需要有足够的耐心、细心,以及一点点的运气。
  • 如果你的记忆力足够好,碰到的碎块能够在脑子里留下一定的印象,那么有助于你快速找到匹配的碎块。
  • 经验能够帮助你提高效率,熟能生巧。

回到代码阅读,我们来做一个类比:

  • 寻找代码中最明显的入手处,比如main函数,core文件夹,model、view、controller的三种大类等。
  • 从理解文件夹、文件名开始,而不是一上来就埋头进入源代码之中。
  • 一个好的全文搜索工具,能够帮你找到相关的代码与片段,渐渐地,看起来- 一团乱麻的代码,就会显现出各种可以被理解的关联出来。
  • 记忆力总是有用的,在脑子里绘出整个系统的架构,并且补充越来越多,越来越清晰的细节。
  • 一样是熟能生巧。
  • 相比拼图,代码阅读还要容易一些,你不需要理解全部的代码,有一个大致的理解以后,就可以先放过一些不太重要的细节。
    另外推荐阅读我目前正在写作的一份文档《借助开源项目,学习软件开发》——第五章:理解开源项目:link
时间: 2024-07-31 21:09:35

《开源思索集》一如何提高阅读源代码的能力的相关文章

《开源思索集》一导读

开放源码是开源软件吗? 当我们谈开源时,我们谈些什么? 如何更有效地学习开源项目的代码? 打开本书,为你解答有关开源的所有问题. "将开源与道德脱钩,既不以道德相标榜,也不以道德相指责.这是对于开源软件最好的态度!" "自由软件值得尊重:软件版权应该遵守:开源运动值得参与.专利说到底是个很糟糕的东西.而知识,蕴含在任何能够被读到的源代码里." "学习开源,就尽可能在代码里找答案,而不是在代码之外找答案,那些都是二手的,而且很可能是不准确的." &

《开源思索集》一欢迎来到异步社区!

欢迎来到异步社区! 开源思索集异步社区的来历异步社区(www.epubit.com.cn)是人民邮电出版社旗下IT专业图书旗舰社区,于2015年8月上线运营. 异步社区依托于人民邮电出版社20余年的IT专业优质出版资源和编辑策划团队,打造传统出版与电子出版和自出版结合.纸质书与电子书结合.传统印刷与POD按需印刷结合的出版平台,提供最新技术资讯,为作者和读者打造交流互动的平台. 社区里都有什么? 购买图书我们出版的图书涵盖主流IT技术,在编程语言.Web技术.数据科学等领域有众多经典畅销图书.社

《开源思索集》一黑客的胜利——读《增长黑客》有感

黑客的胜利--读<增长黑客>有感 开源思索集 增长黑客 这本书在写的时候,我就知晓,只是一直没有去看.作者是我在盛大创新院的前同事,所以在出版之后也很高兴收到了寄来的赠书.简单翻阅之后,就大为喜欢.只不过,我与大多数人喜欢的理由,大不相同: 也许90%的人,是因为这本书在讨论"增长",而我却是因为这本书在讨论"黑客".也许90%的人,会非常喜欢这本书干货满满的"案例".而我却很遗憾,这本书对于"术"讲得太多,&qu

《开源思索集》一三代开源社区的协作模式

三代开源社区的协作模式 开源思索集一.研发工具与研发模式据说,人之区别于禽兽,最大的特征在于利用,甚至发明工具.在没有任何其他工具时,我们只能借助于自己的肢体,一旦有了工具之后,我们的能力将会大大地增加. 但是,从另一个角度来看,工具也同时在限制我们的能力,甚至限制了我们的行为模式与思维模式.有一句俗话说得好:"手里拿着锤子,看见什么都像钉子." 而在研发工具的领域,我们观察到另外一些有趣的现象:因为软件研发工具的开发者,同时也是工具的使用者.因此,他们不仅仅会受制于工具,也往往会由此

《开源思索集》一如何更有效地学习开源项目的代码?

如何更有效地学习开源项目的代码? 开源思索集说说我的开源学习经历: 1.下载源代码之后,首先要跑起来.编译通过.正常运行. 2.在你觉得最有可能的运行到的地方,设置断点或者抛出异常,这样,就能够找到一个项目在正常运行时的入口点. 3.从入口点所在的那个源文件开始阅读,逐步把握整个项目是如何启动起来的. 4.随便改点代码,看看会不会报错,如果报错,会从哪里报错. 5.试着把报错屏蔽.修复.或者绕开. 6.尝试理解一个系统的内部结构,多少组成部分,主线模块是哪些?辅助模块是哪些? 7.从实际需要出发

《开源思索集》一开放源码是开源软件吗? - 简书

开放源码是开源软件吗? - 简书 开源思索集开放源码和开源软件的不同是什么?开放源码不能叫做开源软件吗?所谓开源,仅仅是指符合OSI定义的Open Source吗?Open Source的来历1997年,埃里克·雷蒙(Eric Raymond)出版其著作<大教堂和市集>,探讨黑客社区与自由软件原则.1998年初,该论文受到极大的关注,成为促成网景通讯公司将其受欢迎的互联网套装软件<网景通讯家>(Netscape Communicator)释放成为自由软件的因素之一.这些代码即为今日

《开源思索集》一拥抱开源,从中受益

拥抱开源,从中受益 开源思索集导读:盛大创新院高级研究员庄表伟近日编撰系列文章<借助开源项目,学习软件开发>活动,引起业界关注.庄表伟认为,通过编撰这些文章,希望更多开发者能够借助开源项目提高开发效率,减少重复劳动并从开源软件中受惠.同时,他呼吁更多开发者参与此项活动,通过分享过来人的经验教训,帮助那些初次接触开源的朋友.为此,CSDN记者就开源社区未来前景,开源所带来的机遇和开源是否受到企业青睐等几方面对庄表伟进行了采访. 以下是采访内容: CSDN记者:您为何如此重视开源? 庄表伟:随着科

《开源思索集》一聊聊Github的方法与哲学

聊聊Github的方法与哲学 开源思索集 开源已经是一场革命,但是在开源的发展历史上,其实依然在不断地发展,甚至革命.简单地回顾一下: 最早的开源,仅仅是把自己的源代码开放出来,或者让别人用磁带复制带走,或者放在Server上供人下载. 再后来,关于这个项目的代码与功能,就浮现出来了两个问题:代码大家都能改,如何整理与汇总各自的工作成果?功能大家都有想法,最后应该做成什么样? 于是,源代码版本管理工具与各种在线讨论的方式,开始了一轮又一轮的演进.具体的项目就不再一一列举,但是其中最大的一次创新,

《开源思索集》一当我谈开源时,我谈些什么?

当我谈开源时,我谈些什么? 开源思索集 这本来是一篇打算投稿给<程序员>杂志的稿子,可惜他们用不上了.于是我就打算发在这里,欢迎大家多多批评. 关于开源,我有很多的感想,但是在一篇文章之中,我可以谈些什么呢?在与程序员杂志的编辑杨爽聊天时,我虽尚未理清自己的思路,却想到了一个听起来不错的标题<当谈开源时,我谈些什么>.因为像这样一个看起来完全开放的标题,似乎什么都可以往里面装,简直可以随便涂涂就写出一篇形散神不散的散文了. 一.关于创新 那么,到底应该如何看待开源呢?近日我在读的一