关于代码阅读的进一步补充

尽管大型系统源代码可能非常庞大,但通过分层、模块化、选择性深入、代码复用和理解关键接口,可以理解和掌握复杂系统的本质。本文探讨了如何有效地阅读和理解复杂系统,强调了整体把握和部分深入的重要性,并以Android操作系统为例,展示了如何运用这种思路进行系统框架的剖析。
摘要由CSDN通过智能技术生成

复杂系统源代码有没有得看?
其实还是可以看的。

虽然迪杰斯特拉说,现在计算机程序的发展,使得没有一个人的大脑能够装的下一个计算机程序。
虽然有很多人在说到一些大型系统的源代码时,总是定量的评估道:这个系统代码有100万行,如果一秒钟看一行,不吃不喝,看完整个代码,也得需要多长多长时间,所以,一个人是不可能看完所有的代码的,所以要分析这个系统,我们就得想别的办法。

其实两种说法都是有道理的,也不假。那为什么我还要说复杂系统的源代码是有得看的?其实这里要考虑很多实际情况。

1 分层和模块化
将复杂的系统简单化。系统最初的设计也是这样来的

2 有所取舍
目的是整体有了解,精通于部分模块。很多时候不需要对每一个模块都十分精通

3 看代码需要感觉
看名知意。需要有基础,前期看过很多代码

4 很多代码存在复用
有一些模块可能是复用的,或者别的系统有用到过,可以减少代码量


5 细节上要把握好度
一个大系统,一般都是很多人花很多时间,慢慢迭代出来的,一个人的精力当然有限,不可能对所有细节都了如指掌。所以还是之前的那个策略,有些模块需要了解他的功能和api即可,另外一些模块可以了解的更细一些。只有对少部分模块才能了解的很细节。


人的大脑容量无限,但是人的精力是有限的。

总的来讲,就是整体把握,部分模块和细节深入,脑补缺口,通过已有的经典设计和自身经验。
比如,对于Android这个大操作系统,可以类似深入浅出MFC那样,对其深入浅出一番。
用形象的代码和生动的语言,模拟Android整个的系统框架。


从上到下的系统设计
一个系统划分成一些功能
一个功能划分成一些模块
一个模块划分成一些可以工作的类
类细化为一些可以工作的接口
接口细化为一些可以工作的代码逻辑


具体的低颗粒度接口,依赖特定硬件或者设备模型的接口 具备对设备的抽象
接口的组合,低颗粒度的功能接口,具备一定的逻辑功能
一些功能接口的组合,复杂的功能接口,具备对问题的初步抽象
继续组合,一些模块,具体对问题的高层抽象
模块整合,解决具体的问题。形成问题领域的概念


需要始终抓住内存是我们思考一切的基础

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙赤子

你的小小鼓励助我翻山越岭

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值