与热爱同行的源码阅读,想要掌握它、运用它,如何开启是关键【玩转源码】

举报
叶一一 发表于 2023/07/25 12:47:19 2023/07/25
【摘要】 前言antd 5.0 正式发布已经有一段时间了,除了对它新特性感兴趣之外,它的源码我十分好奇,一直以来都没机会“参观”一下。antd 的源码内容还是很多的,想要完整阅读不是一件简单的事情。此前,我虽然有过几个完整的阅读经验,但是源码项目相对简单,阅读过程快速且顺畅。所以我一直想办法摸索一份源码阅读的开启经验,好让自己更好的掌握源码、运用源码。通过一段时间的摸索,我发现开启前的准备工作也同样重...

前言

antd 5.0 正式发布已经有一段时间了,除了对它新特性感兴趣之外,它的源码我十分好奇,一直以来都没机会“参观”一下。

antd 的源码内容还是很多的,想要完整阅读不是一件简单的事情。

此前,我虽然有过几个完整的阅读经验,但是源码项目相对简单,阅读过程快速且顺畅。

所以我一直想办法摸索一份源码阅读的开启经验,好让自己更好的掌握源码、运用源码。

通过一段时间的摸索,我发现开启前的准备工作也同样重要,于是整理了一份源码阅读的经验,分享出来。

当我想阅读一份源码

@ant-design/cssinjs 的源码,由于其文档内容较少,很多参数单纯靠代码内容无法确定其准确的结构,所以在进一步的研究之前,我进行了一场深思。

阅读前的思考

我认真思考了几个问题:

  • 我阅读这个源码的目标是什么?
  • 我要把所有功能梳理的一清二楚吗?
  • 遇到复杂的源码,没有完整的时间,我应该怎么合理做规划?
  • 明确方案之后,我具体应该怎么去实现?
  • 源码阅读完之后呢?仅仅写篇文章,还是真的应用到工作中?

阅读源码的目标

对于 @ant-design/cssinjs,我的目标很明确,搞懂它是如何实现动态主题的。

功能梳理全还是精?

如果我不明确这个问题,我有可能读的时候会分散,看到哪,读到哪。

如果我要梳理完全,可能会无形中给自己很多压力。

如果我只看重点功能,那我怎么确定哪些是重点功能呢?

如下为功能梳理的全部情况流程图

无论是全部读完,还是挑重点功能阅读,都推荐进行功能细化,将事情拆分成多个小项。

如何规划

我习惯分类归纳学习经验,按照技术类型区分。这次源码阅读虽然有之前的经验,但是之前的源码整体难度不是很高。后面可能还会阅读内容更为复杂的开源项目,现阶段还是一个积累经验的过程。

这次是一个很好的尝试,后面我会归纳出一套完整的经验。

怎么开始

我本来尝试从测试用例开始,发现运行之后不是我想要的结果,我想到其实还有一条路可以试试,那就是 demo。

通过 demo 既可以查看效果,又可以打印各种参数。

总结

万事开头难,一个好的开始十分能够调动开发者的积极性。

而我也借着阅antd源码的机会,有了一个较为基础的经验,方便后面能够学习更多优秀的开发思维。

彩蛋

有时候觉得实现方式挺有趣的,但是又说不上哪里有趣?

花时间花心思设计出一个不错的功能,实现思路有趣,代码逻辑清晰,功能本身也丰富多彩。但是等到跟大家安利的时候,却不知道从何说起,甚至连怎么用都表达的不够清晰。

不善表达?

1.理清条理。讲之前,不妨先把功能的是什么、怎么用、核心实现列出来。提前做好准备,等到真正做分享的时候,能清楚明白的表达自己是想法。

2.言必有中。有时候分享的内容不在于文字的数量,而在于能说到点子上。不然,听众听了半小时,还云里雾里,不知道分享的功能到底是什么。

3.扩宽技术词汇量。这是很关键的一点,有时候讲解的内容,远没有功能本身精彩。,比起很直白的说这么写功能就好使,介绍用了什么设计模式、包含哪些技术概念,可以更有吸引力。

怯场?

心中总有腹稿万千,等到台上看着大家期待的眼神,准备好的开场白,瞬间跑了一半。磕磕巴巴的讲完,有点懊恼没有表达好。

这种情况,我给的两个建议是自信+准备充足。

首先,自信不单单指当时的状态,还有对分享的内容。

然后,准备充足是指,演讲稿要简要而全面。我一般会准备PPT,内容不会特别多,但是全。这样腹稿忘了的时候,照着PPT能继续下去。

最后,分享前,尽量自己先做几次完整的分享练习,看能否连贯的将分享内容讲出来。

总结时刻

练习是亘古不变的良策。


作者:非职业「传道授业解惑」的开发者叶一一
简介:「趣学前端」、「CSS畅想」系列作者,华夏美食、国漫、古风重度爱好者,刑侦、无限流小说初级玩家。
如果看完文章有所收获,欢迎点赞👍 | 收藏⭐️ | 留言📝。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。