《开源思索集》一如何更有效地学习开源项目的代码?
本节书摘来异步社区《开源思索集》一书中的第2章,第2.1节,作者: 庄表伟 责编: 杨海玲, 更多章节内容可以访问云栖社区“异步社区”公众号查看。
如何更有效地学习开源项目的代码?
开源思索集
说说我的开源学习经历:
1.下载源代码之后,首先要跑起来。编译通过、正常运行。
2.在你觉得最有可能的运行到的地方,设置断点或者抛出异常,这样,就能够找到一个项目在正常运行时的入口点。
3.从入口点所在的那个源文件开始阅读,逐步把握整个项目是如何启动起来的。
4.随便改点代码,看看会不会报错,如果报错,会从哪里报错。
5.试着把报错屏蔽、修复、或者绕开。
6.尝试理解一个系统的内部结构,多少组成部分,主线模块是哪些?辅助模块是哪些?
7.从实际需要出发,修改这个项目,满足自己的某一个小的需求。
在此之前,尽量不要在网络上找答案。
8.看看相关的讨论与心得,看看是否与自己的理解相一致。
9.提交bug fix或者某个新的功能代码。
在学习开源的过程中,有以下几个方面会获得大量的收获:
1.架构与模式
2.开源社区常见的一些惯用法
3.相关领域的结构与算法
总结一点是:学习开源,就尽可能在代码里找答案,而不是在代码之外找答案,那些都是二手的,而且很可能是不准确的。
《开源思索集》一如何更有效地学习开源项目的代码?相关推荐
- 《开源思索集》一黑客的胜利——读《增长黑客》有感
本节书摘来异步社区<开源思索集>一书中的第1章,作者: 庄表伟 责编: 杨海玲, 更多章节内容可以访问云栖社区"异步社区"公众号查看. 黑客的胜利--读<增长黑客 ...
- 《开源思索集》一欢迎来到异步社区!
本节书摘来异步社区<开源思索集>一书中的第1章,作者: 庄表伟 责编: 杨海玲, 更多章节内容可以访问云栖社区"异步社区"公众号查看. 欢迎来到异步社区! 开源思索集 ...
- 《开源思索集》一Source Code + X
本节书摘来异步社区<开源思索集>一书中的第1章,作者: 庄表伟 责编: 杨海玲, 更多章节内容可以访问云栖社区"异步社区"公众号查看. Source Code + X ...
- Linux下开源pcb设计软件,KiCAD更好用的开源免费的原理图、PCB设计软件
有没有一款PCB设计工具非常适合初学者?它最好满足以下条件: 可以永远免费使用全部的功能 - 从建库到布局布线,生成各种需要的文件,企业的产品设计也可以放心使用: 除了Windows下,还能够运行在M ...
- 如何有效的学习开源代码
导读:对于开发者来说,社区里丰富的开源代码其实是笔极为宝贵的财富.如果能充分利用好开放源代码的资源,不仅可以掌握多种编程方法,提高实践能力,还能获得好的思想,激发编程灵感.开源代码怎么学以及怎样才能学 ...
- 在集群的操作机上执行命令为什么会出现权限被拒绝_如何使用 TDengine 2.0 最新开源的集群功能?
导读:8月3日,TDengine 发布了 v2.0 版本,这次更新最大的亮点是,我们将分布式集群功能开源.开源后,引起了很大反响,又连续几天在 GitHub 趋势榜排名第一.不少关注TDengine的 ...
- VEGA:诺亚AutoML高性能开源算法集简介
摘要:VEGA是华为诺亚方舟实验室自研的全流程AutoML算法集合,提供架构搜索.超参优化.数据增强.模型压缩等全流程机器学习自动化基础能力. 本文分享自华为云社区<VEGA:诺亚AutoML高 ...
- 掌握了开源框架还不够,你更需要掌握源代码
摘要:本篇文章将以解决 Element Plus 问题的经历开始,循序渐进讨论开源项目或开源框架的问题,进一步讨论驾驭开源项目源代码的方法和技巧,分享自己阅读.理解和更改源代码的思路. 本文分享自华为 ...
- 女程序员在GitHub提交PR更易被拒?开源世界“她”力量
据2021年全球软件开发者调查显示,绝大多数开发者为男性并占所有受访者的91.67%.女性开发人员仅占所有受访者的5.31%: 基于全球 183 个国家或地区的 31743 名开发者,2021 Jet ...
最新文章
- 大数据,正在到来的数据革命——涂子沛
- html自定义datajs,科技常识:HTML5的自定义属性data-*详细介绍和JS操作实例
- 需求:整个网站不能出现以下两个链接。思路:检索到网站中凡是出现该链接的都让它的href值为空...
- Delphi 中将对象作为参数传递的使用
- 从实验现象详细分析BGP的路由策略与选路原则
- python给出数据点进行插值_Python对数据进行插值和下采样的方法
- 2012年I / O之后
- wu** C语言注意点
- 书单丨5本书带你学习Kubernetes,掌控云计算的未来
- OpenGL学习笔记_图形渲染管线及典型渲染流程(绘制一个三角形)
- 【2018.9.26】K-D Tree详解
- excel服务器bom修改,物料清单BOM表的实现方法_勤哲Excel服务器 - 勤哲app应用之家...
- Bex5文档服务器,WeX5/BeX5 UIServer的缓存机制
- 基于微信小程序 校园跑腿小程序毕业设计毕设开题报告参考功能
- Golang defer、panic和recover
- 【程序员面试金典】有一个XxY的网格,一个机器人只能走格点且只能向右或向下走,要从左上角走到右下角。请设计一个算法,计算机器人有多少种走法。注意这次的网格中有些障碍点是不能走的。
- vlookup使用步骤_VLOOKUP函数的使用方法详解
- Java金额大写转换
- 力扣88 - 合并两个有序数组【归并排序思维】
- 【leetcode】2248. 多个数组求交集(js实现)
热门文章
- 均匀白噪声的定义及特点_噪声的物理本质是什么?
- jquery生成一个li_jquery-创建元素和添加子元素
- java map判断是否有键_检查Java HashMap中是否存在给定键
- 什么时候html的过渡版本,CSS过渡与转换
- 先进制造技术论文_干货分享:新能源汽车先进制造技术
- PHP提高redis命中率,怎么提高redis缓存命中率
- mysql 临时表增加主键_MySQL之重建表
- 大学生创业交流会计算机二级,我校召开第三届“互联网+”大学生创新创业大赛选题交流讨论会...
- java连接摄像头_Java实现 海康摄像头抓拍图像(示例代码)
- java Socket(二)