本节书摘来异步社区《开源思索集》一书中的第2章,第2.1节,作者: 庄表伟 责编: 杨海玲, 更多章节内容可以访问云栖社区“异步社区”公众号查看。

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

开源思索集
说说我的开源学习经历:

1.下载源代码之后,首先要跑起来。编译通过、正常运行。

2.在你觉得最有可能的运行到的地方,设置断点或者抛出异常,这样,就能够找到一个项目在正常运行时的入口点。

3.从入口点所在的那个源文件开始阅读,逐步把握整个项目是如何启动起来的。

4.随便改点代码,看看会不会报错,如果报错,会从哪里报错。

5.试着把报错屏蔽、修复、或者绕开。

6.尝试理解一个系统的内部结构,多少组成部分,主线模块是哪些?辅助模块是哪些?

7.从实际需要出发,修改这个项目,满足自己的某一个小的需求。

在此之前,尽量不要在网络上找答案。

8.看看相关的讨论与心得,看看是否与自己的理解相一致。

9.提交bug fix或者某个新的功能代码。

在学习开源的过程中,有以下几个方面会获得大量的收获:

1.架构与模式

2.开源社区常见的一些惯用法

3.相关领域的结构与算法

总结一点是:学习开源,就尽可能在代码里找答案,而不是在代码之外找答案,那些都是二手的,而且很可能是不准确的。

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

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

    本节书摘来异步社区<开源思索集>一书中的第1章,作者: 庄表伟 责编: 杨海玲, 更多章节内容可以访问云栖社区"异步社区"公众号查看. 黑客的胜利--读<增长黑客 ...

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

    本节书摘来异步社区<开源思索集>一书中的第1章,作者: 庄表伟 责编: 杨海玲, 更多章节内容可以访问云栖社区"异步社区"公众号查看. 欢迎来到异步社区! 开源思索集 ...

  3. 《开源思索集》一Source Code + X

    本节书摘来异步社区<开源思索集>一书中的第1章,作者: 庄表伟 责编: 杨海玲, 更多章节内容可以访问云栖社区"异步社区"公众号查看. Source Code + X ...

  4. Linux下开源pcb设计软件,KiCAD更好用的开源免费的原理图、PCB设计软件

    有没有一款PCB设计工具非常适合初学者?它最好满足以下条件: 可以永远免费使用全部的功能 - 从建库到布局布线,生成各种需要的文件,企业的产品设计也可以放心使用: 除了Windows下,还能够运行在M ...

  5. 如何有效的学习开源代码

    导读:对于开发者来说,社区里丰富的开源代码其实是笔极为宝贵的财富.如果能充分利用好开放源代码的资源,不仅可以掌握多种编程方法,提高实践能力,还能获得好的思想,激发编程灵感.开源代码怎么学以及怎样才能学 ...

  6. 在集群的操作机上执行命令为什么会出现权限被拒绝_如何使用 TDengine 2.0 最新开源的集群功能?

    导读:8月3日,TDengine 发布了 v2.0 版本,这次更新最大的亮点是,我们将分布式集群功能开源.开源后,引起了很大反响,又连续几天在 GitHub 趋势榜排名第一.不少关注TDengine的 ...

  7. VEGA:诺亚AutoML高性能开源算法集简介

    摘要:VEGA是华为诺亚方舟实验室自研的全流程AutoML算法集合,提供架构搜索.超参优化.数据增强.模型压缩等全流程机器学习自动化基础能力. 本文分享自华为云社区<VEGA:诺亚AutoML高 ...

  8. 掌握了开源框架还不够,你更需要掌握源代码

    摘要:本篇文章将以解决 Element Plus 问题的经历开始,循序渐进讨论开源项目或开源框架的问题,进一步讨论驾驭开源项目源代码的方法和技巧,分享自己阅读.理解和更改源代码的思路. 本文分享自华为 ...

  9. 女程序员在GitHub提交PR更易被拒?开源世界“她”力量

    据2021年全球软件开发者调查显示,绝大多数开发者为男性并占所有受访者的91.67%.女性开发人员仅占所有受访者的5.31%: 基于全球 183 个国家或地区的 31743 名开发者,2021 Jet ...

最新文章

  1. 高性能微服务架构设计模式@霞落满天
  2. mybatis mysql方言_MyBatis 方言支持 - Mysql to 华为高斯数据库(gaussdb)
  3. CardView的那点事儿
  4. 读写分离,读写分离死锁解决方案,事务发布死锁解决方案,发布订阅死锁解决方案|事务(进程 ID *)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品。请重新运行该事务...
  5. Spring项目的按层打包已过时
  6. TCP三次握手四次挥手(图解)
  7. SAP License:SAP BW的综合计划
  8. python画椭圆的逻辑_在Python中绘制椭圆轨道(使用numpy,matplotlib)
  9. java开发flex_FLEX+Java开发
  10. not optimal php,PHP错误提示It is not safe to rely on the system……的解决方法
  11. Access denied (403) see security.limit_extensions
  12. ADS软件的使用教程
  13. java解四元一次方程
  14. 计算机想ping一下网络,Ping命令以检测Windows7下的计算机网络速度
  15. php函数阅读,[PHP源码阅读]strtolower和strtoupper函数
  16. L3级自动驾驶接管实验测试平台及其应用研究
  17. 初级计算机信息处理员笔试题,初级信息处理技术员计算机系统基础知识考试卷模拟考试^题...
  18. 程序员转行能做什么?
  19. 毕业设计有哪些可借鉴的 GitHub 项目?
  20. div获得/失去焦点

热门文章

  1. update 后面能接子查询吗_只用身份证能查询CPA成绩吗?查询步骤不能忘
  2. c语言数据结构 自测卷答案,《c语言数据结构》第2章 自测卷答案
  3. mysql提权_mysql提权总结
  4. html线框聚焦效果,24种表单input输入框聚焦动画特效
  5. 计算机科学英文杂志,Journal of Computer Science Technology
  6. rf中resourceid_解决VC++ MFC程序resource.h头文件中ID重复问题
  7. C语言怎么确定用什么整形,【求助各位大虾!】 怎样用 if 语句验证一个整形数字。...
  8. linux上安装activeMQ
  9. JS遮罩插件 -- JqLoad
  10. python sdk怎么用_如何使用七牛Python SDK写一个同步脚本及使用教程