如何更有效地学习开源项目的代码?(知乎)

问题:

学计算机的学生,空闲时间很多,又不方便出去实习,朋友说让我看看开源代码,可是漫漫开源社区,而且感觉项目都很庞大且复杂,不知道大家对这个有什么看法。

回答1:

著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:姜宁
链接:http://www.zhihu.com/question/19637879/answer/13545260
来源:知乎

我很认同庄表伟总结的 “学习开源,就 尽可能在代码里找答案,而不是在代码之外找答案,那些都是二手的,而且很可能是不准确的。” 但是如何 读好,读懂代码,我这边还是有不同的认识。

1. 需要从 代码管理库下载完整的源代码,而不是简单的源代码文件包或者source.jar.
这样做有很多好处,一个是你可以获取 代码的修改记录,还有你可以 获取到完整的测试代码,当你要提交patch的时候,你可以借助版本管理工具生成 针对不同版本的patch。

2. 示例代码与单元测试
示例代码可以帮助你学会使用相关开源项目的API。很多朋友在使用开源项目的时候遇到一个小问题就发信给开发者要这样或者那样的示例代码,其实他们没有发现大部分的开源项目在开发的过程中,为了验证其实现的功能,都会写很多 单元测试代码。这些代码其实非常好的示例代码。可能是 下源码,建工程会花费你几个小时的时间,但是如果你想深入了解开源项目的话,这点投资还是很有价值的。

其实读单元测试的好处太多了,这里简单给大家列一下:
  • 由于一个单元测试一般也就是几个小时的开发工作量,你很容易就能读懂相关的代码
  • 每个单元测试都是可以独立运行的,这样节省你跟踪调试的时间
  • 单元测试在很大程度定义了软件的功能,可以帮助你快速掌握项目的相关API
  • 如果你修改的开源项目的代码,你可以通过修改单元测试来验证你的修改是否正确

3. 架构文档
其实大部分的开源项目都会对其架构有一定的描述,这些描述 可能会有点过时,但是通读一下会让你项目有 一个比较深入的认识。这样做好比是让 你对北京的二环,三环,四环,五环有个大体的认识。这样在你要对代码的某块内容进行详细研究的时候(例如找中关村的位置的时候,知道西北四环) 就能很快定位了。

回答2:

著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:小白
链接:http://www.zhihu.com/question/19637879/answer/13532090
来源:知乎

如果你空闲时间很多,我建议你多参加一些比赛。我在大学期间就频繁参加各种比赛,收获很大。一个完整的项目, 不管再小,只要做完了,就会有收获。

大三的时候就是因为参加比赛,才开始看一些比较大的开源项目源代码,大概几万行的样子,看完了感觉受益匪浅,从网上成熟的开源代码里,可以学到 很多的设计思想。之后因为其他的项目,又陆续看了几个开源项目的代码,每一个代码量都不算太大,大概几千行到几万行不等。虽然我很热爱编程,但是,我看开源代码也全部是因为项目需要,是 项目驱动的,感觉很突兀的拿来一个项目的代码来看,找不到那么强大的斗志。

所以,我还是建议你 从项目入手,以项目为驱动,激励自己进步,是否一定要看开源代码,就看你个人的兴趣和需要了。
回答3:

著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:张西家
链接:http://www.zhihu.com/question/19637879/answer/13643269
来源:知乎

我来补充几条和 参与开发相关的。当然参与不是学习开源代码必要的条件,但是实际的参与, 和作者们直接的交流会更有效地帮助你理解和提高。
  • 选择什么项目很重要,如果重在参与和实践,那么最好选一个自己用得到,非常感兴趣的项目。这样可以有很强的动力支持自己做一些代码,否则只是阅读代码很枯燥,效果也不好。
  • 项目的类型,名气,成熟度以及社区开放性,都会对你的参与有影响。
  • 一般都会有一个 How to Contribute 的文档,可以从那里看起来,运气好的话可以发现有 code walkthrough guide,或者是架构类文档
  • 一定要去订阅项目的开发邮件列表。IRC 一直挂着,每天至少一次用十几分钟扫描一下 IRC 上的讨论。很多项目会有为新人准备好的入门 bug 列表,挑一个没有人在做而你又特别有兴趣的开始做起来,有问题一般都可以在 IRC 或邮件列表上问
  • 建议「脑中」有一个大概的流程图就可以,从高层去把握,不要花很多时间去画细节的流程图。一个是不必记忆太多细节,还有就是绝大多数不可以自动生成的图形随着代码的演进都会过时。
  • 对一些文档注释极少的项目,有时可以利用版本控制工具回退到比较早期较简单的版本,更容易整体把握。不过这个方法不是很通用,最好先问问作者们。
  • Coders At Work 这本书中有多次聊到如何阅读代码,有兴趣可以找到读读

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值