
之前听说过一个故事,一个领导为了提高团队战斗力,把团队成员集中起来,搞封闭开发,重点还是在没有网的条件下。
结果就是一个月过去了,产出基本为零。
我发现,如果没有网,程序员基本上是写不出代码了。现在做什么功能之前,先到网上搜搜看,然后直接复制粘贴搞定。
最实用的技术就是这么朴实无华。
而大部分的代码都是在 GitHub 上找的,可以这么说,GitHub 基本上撑起了程序员一半的工资。
那如果不想把代码 clone 到本地,怎么在 GitHub 上高效阅读源码呢?
我最开始用的是一个插件,叫 Octotree 。
有了这个插件之后,在页面的最左侧会多一个目录树。这样的话,就可以快速查看项目的整体目录结构,而且在切换文件时也会更加流畅,再也不用来回刷新页面了。
细心的小伙伴可能也发现了,上面的截图还有一处不同,就是页面中央多了一个「 GitHub1s 」按钮。
没错,这就是我要介绍的第二个插件。
点击这个按钮之后呢,就会呼出在线版的 VS Code,然后使用 VS Code 打开代码仓库,直接享受 IDE 的体验。
如果想直接通过网址来打开也是可以的,比如我的项目地址是:
只需要将地址稍稍改动,加一个 1s 即可:
那么这个 1s 到底是什么意思呢?官方是这么说的:
当然了,我们也可以把代码拉下来,自己部署。然后根据服务响应的快慢,起个名字叫 2s 或者 3s 都可以。
虽然这种方式已经很方便了,但还有一个缺点,就是打开的代码是只读的,不能编辑。比如我只想改几个很小的点,那么不好意思,还是要把代码 clone 下来,走一遍提交流程。
那还有更好的方式吗?
当然有。
终于到重点了,隆重推出由官方支持的方式:只需要在代码仓库页面按一下 就可以直接使用 VS Code 打开,而且支持编辑。
也可以通过地址访问,把 com 改成 dev ,比如:
太方便了,太优雅了。感觉好多 *** 作都可以直接在浏览器里搞定了。
微软还是厉害。曾几何时,我记得微软在网上骂声一片,对其收购 GitHub 也持悲观态度。但人家现在开源项目已经上千个了,还在不断贡献。而且产品也越做越好,别的不说,单靠 VS Code 就俘获了多少程序员的芳心。
科技 公司还是得踏踏实实搞技术,诚心诚意做产品,搞其他花里胡哨的东西没啥用。
我们程序员呢,努力提升技术,然后多给文章点在看,多转发,就挺好。
学会在idea(eclipse)中阅读、调试源码,是java程序员必不可少的一项技能。
在idea中配完环境后,默认其实也是能够对jdk的源码进行debug调试的。但是无法在源码中添加自己的注释,无法添加自己的理解。如果干瞪眼看的话,可能过段时间,就忘记了。下面就介绍下,如何在jdk源码中为所欲为,像在我们自己的代码中一样写注释、调代码:
打开idea,选择Project->File->Project Structure->SDKs->Sourcepath,初始状态如下图 :
打开本地jdk安装路径,本处为E:\java\jdk8,将此路径下的srczip压缩包解压到自定义的指定文件夹(可以在电脑磁盘任意位置),本处解压到同目录的jdk_source文件夹下,如下图:
继续在步骤1中的设置页面中 *** 作,将E:\java\jdk8\srczip通过右侧的减号将其移除;并通过右侧的加号,将解压文件夹E:\java\jdk8\jdk_source导入进来;点击apply,再点击OK。导入结果见下图:
这时,再重新打开jdk的源码类,我们就可以在源java文件中,添加自己的注释了。
一定注意:添加注释时,一定不要新加一行写注释。最好在一行代码的后面,使用//进行注释。否则行号和真正的jre中编译后的代码行号对应不上,如果对源码debug时,会出现代码运行和行号不匹配的情况
用 iPad 阅读源代码当然可行,Retina 屏幕阅读文字非常爽。
虽然 iPad 上没有开发工具,但是能够让你沉下心来思考,就跟读论文似的。
具体方式大概有两种:
1 PDF
首先你需要安装 doxygen,然后运行 doxywizard。
把输出设置为 latex 模式,并且选上 LATEX_SOURCE_CODE,
等生成完了,到输出目录里 make 一下,
就得到了带目录、调用关系图(矢量),以及源码(可跳转)的 PDF。
<img data-rawheight="473" data-rawwidth="509" src=">
对于开发者来说,社区里丰富的开源代码其实是笔极为宝贵的财富。如果能充分利用好开放源代码的资源,不仅可以掌握多种编程方法,提高实践能力,还能获得好的思想,激发编程灵感。开源代码怎么学以及怎样才能学好是大家经常关注的话题,日前,在问答网站知乎上,有人抛出了“如何更有效地学习开源项目的代码?”的话题,众技术好手各抒己见,CSDN软件研发频道对本文内容进行了整理,方便大家学习与参考。盛大创新研究院研究员 庄表伟:学习开源 尽可能在代码里找答案 庄表伟提供了以下9个建议:1在下载源代码之后,首先要跑起来,编译通过、正常运行;2在你觉得最有可能运行到的地方,设置断点或者抛出异常,这样,就能够找到一个项目在正常运行时的入口点;3从入口点所在的那个源文件开始阅读,逐步把握整个项目是如何启动起来;4随便改点代码,看看会不会报错,如果报错,会从哪里报错;5试着把报错屏蔽、修复、或者绕开;6尝试理解一个系统的内部结构,多少组成部分,主线模块是哪些?辅助模块是哪些?7从实际需要出发,修改这个项目,满足自己的某一个小的需求。(注意在此之前,尽量不要在网络上找答案);8看看相关的讨论与心得,是否与自己的理解相一致;9提交bug fix或者某个新的功能代码。在学习开源的过程中,有几个方面会获得大量收获,1架构与模式;2开源社区常见的一些惯用法;3相关领域的结构与算法。总结一点:学习开源,尽可能在代码里找答案,而不是在代码之外找答案,那些都是二手的,而且很可能不准确。互联网评论员 朱晓阳:从简单做起 理论联系实践朱晓阳对此发表了两点看法:首先,从简单做起。刚开始的时候学习一些领域内基础理论,然后找一些简单的东西去实现,不能一开始就去找开源项目。建议大家经常动手写一些小程序,如改进宿舍网络登录客户端等。积小成多,能显著提高自己的编程能力。其次,学习的知识一定要和自己生活或工作有联系,这样才会有乐趣或动力。互联网评论员孙竟:先构想一个想做的项目首先,构想一个想做的项目(比如论坛、博客、微博等);然后,思考需要什么功能,应该怎么去实现,尽可能包括各种细节,有必要时记录下来;最后,去找个类似的开源应用,看看它是怎么实现的,和你的想法有什么差异,有什么可以学习或需要改进的地方。互联网草根hqman:我的5个建议:1反复地使用软件,熟释软件的组成文件和软件功能,注意IE地址栏内的地址变化;2打开数据库文件或存放数据的XML文件,参照数据字典了解各个表和字段的数据含意;如果没有数据字典,就运行软件输入数据,参照所输入的数据,了解各个表和字段的数据含义;3利用Visio进行反向工程,将类图抽出来;4研究类之间的关系,注释各个类的属性和方法,弄清程序的整体框架;5另开一个项目,按照软件开发的流程,将代码分段复制进新的项目,进行编译调试,关注一些实现细节,学习一些编程的技巧。在读研究生张伟:在校学生空闲时间多参加一下比赛张伟的建议是大家在空闲时间多参加一些比赛。一个完整的项目,不管再小,只要做完了,就会有收获。多看一些比较大的开源项目源代码,每次看完后都会受益匪浅。从网上成熟的开源代码里,可以学到很多的设计思想。他认为,从项目入手,以项目为驱动,可激励自己进步。当然,是否一定需要看开源代码,这将取决于个人的兴趣和需要。画出程序流程图 理解程序流程思想CSDN博客专家i_like_cpp:曾在CSDN分享了《如何将源代码学好》的博文,对此,他给出了四点建议:1 画出整个程序的流程图,理解整个程序流程的思想。画流程图的方式更让人很直接的理解程序的整体流程,而不会被代码所干扰,让程序员总体上把握整个程序;2 对流程各节点(函数或过程)的理解,流程的每一节点是构成整个流程的不可缺少的部份;3再把流程和流程各节点串起来理解整个程序,可能的话最好写出读书笔记;4 如果想深刻的学习到源代码的精髓所在,请写一个相近的程序进行 *** 练。理解了这个程序并不表明掌握了这个程序,只有在 *** 练一个相近的程序时,才知道你到底理解了多少,掌握了多少。编后语:源代码的学习是一个从整体到不断细化的过程,是一个极为繁琐的过程同时也是一个不断认清事物本源的过程。本文总结的源代码的学习经验,希望对您有所帮助。那么,CSDN的网友们,你们是如何对待开源项目源代码的呢?
如果只是想看看一些常用类的实现, 在Android包管理器里把源码下载下来, 随便一个IDE配好Source Code的path看就行
但如果想深入的了解Android系统, 那么可以看下我的一些简单的总结
知识
Java
Java是AOSP的主要语言之一 没得说, 必需熟练掌握
熟练的Android App开发
Linux
Android基于Linux的, 并且AOSP的推荐编译环境是Ubuntu 1204 所以熟练的使用并了解Linux这个系统是必不可少的 如果你想了解偏底层的代码, 那么必需了解基本的Linux环境下的程序开发 如果再深入到驱动层, 那么Kernel相关的知识也要具备
Make
AOSP使用Make系统进行编译 了解基本的Makefile编写会让你更清晰了解AOSP这个庞大的项目是如何构建起来的
Git
AOSP使用git+repo进行源码管理 这应该是程序员必备技能吧
C++
Android系统的一些性能敏感模块及第三方库是用C++实现的, 比如: Input系统, Chromium项目(WebView的底层实现)
硬件
流畅的国际网络
AOSP代码下载需要你拥有一个流畅的国际网络 如果在下载代码这一步就失去耐心的话, 那你肯定没有耐心去看那乱糟糟的AOSP代码 另外, 好程序员应该都会需要一个流畅的Google
一台运行Ubuntu 1204的PC
如果只是阅读源码而不做太多修改的话, 其实不需要太高的配置
一台Nexus设备
AOSP项目默认只支持Nexus系列设备 没有也没关系, 你依然可以读代码 但如果你想在大牛之路走的更远, 还是改改代码, 然后刷机调试看看吧
高品质USB线
要刷机时线坏了, 没有更窝心的事儿了
软件
Ubuntu 1204
官方推荐, 没得选
Oracle Java 16
注意不要用OpenJDK 这是个坑, 官方文档虽然有写, 但还是单独提一下
安装:
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java6-installer
sudo apt-get install oracle-java6-set-default
Eclipse
估计会有不少人吐槽, 为什么要用这个老古董 其实原因很简单, 合适 刚开始搞AOSP时, 为了找到效率最优的工具, 我尝试过Eclipse, IntelliJ IDEA, Vim+Ctags, Sublime Text+Ctags 最终结果还是Eclipse 主要优点有:
有语法分析 (快速准确的类, 方法跳转)
支持C++ (IntelliJ的C++支持做的太慢了)
嵌入了DDMS, View Hierarchy等调试工具
为了提高效率, 花5分钟背下常用快捷键非常非常值得
调整好你的classpath, 不要导入无用的代码 因为AOSP项目代码实在是太多了 当你还不需要看C++代码时, 不要为项目添加C++支持, 建索引过程会让你崩溃
Intellij IDEA
开发App必备 当你要调试系统的某个功能是, 常常需要迅速写出一个调试用App, 这个时候老旧的Eclipse就不好用了 Itellij IDEA的xml自动补全非常给力
巨人的肩膀
这个一定要先读 项目介绍, 代码下载, 环境搭建, 刷机方法, Eclipse配置都在这里 这是一切的基础
这个其实是给App开发者看的 但是里面也有不少关于系统机制的介绍, 值得细读
此老罗非彼老罗 罗升阳老师的博客非常有营养, 基本可以作为指引你开始阅读AOSP源码的教程 你可以按照博客的时间顺序一篇篇挑需要的看但这个系列的博客有些问题:
早期的博客是基于旧版本的Android;
大量的代码流程追踪 读文章时你一定要清楚你在看的东西在整个系统处于什么样的位置
邓凡平老师也是为Android大牛, 博客同样很有营养 但是不像罗升阳老师的那么系统 更多的是一些技术点的深入探讨
Android官方Issue列表 我在开发过程中发现过一些奇怪的bug, 最后发现这里基本都有记录 当然你可以提一些新的, 有没有人改就是另外一回事了
一定要能流畅的使用这个工具 大量的相关知识是没有人系统的总结的, 你需要自己搞定
其它
代码组织
AOSP的编译单元不是和git项目一一对应的, 而是和Androidmk文件一一对应的 善用mmm命令进行模块编译将节省你大量的时间
Binder
这是Android最基础的进程间通讯 在Application和System services之间大量使用 你不仅要知道AIDL如何使用, 也要知道如何手写Binder接口 这对你理解Android的Application和System services如何交互有非常重要的作用 Binder如何实现的倒不必着急看
HAL
除非你对硬件特别感兴趣或者想去方案公司上班, 否则别花太多时间在这一层
CyanogenMod
这是一个基于AOSP的第三方Rom 从这个项目的wiki里你能学到很多AOSP官方没有告诉你的东西 比如如何支持Nexus以外的设备
DIA
这是一个Linux下画UML的工具, 能够帮你梳理看过的代码
XDA
分步 分块。
大型工程 都会划分不同的功能模块。
所以 分各个功能模块
先了解大致的各个模块的功能,不考虑细节。
然后 了解整个程序的数据流
因为C是面向过程的,不考虑细节的实现, 仅了解调用的流程并不难。
这部分,可以从主函数开始一步步下去
也可以从最终实现功能,一步步跟踪打印或者实际效果。
也就是自顶向下,以及自底向上两种。过于复杂的 还可以两头凑。
大致功能了解了, 再逐个模块了解各个模块的实现,就要简单多了。
windows下一般使用source insight来阅读linux源码。
Source Insight是一个面向项目开发的程序编辑器和代码浏览器,它拥有内置的对C/C++, C#和Java等程序的分析。能分析源代码并在工作的同时动态维护它自己的符号数据库,并自动显示有用的上下文信息。
以上就是关于如何在 GitHub 上高效阅读源码全部的内容,包括:如何在 GitHub 上高效阅读源码、JAVA阅读源码,大量英文注释阅读不方便,求集成idea里面的翻译java注释由英文翻译为中文的工具。、iPad 上有哪些源代码阅读软件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)