• 大型项目工程代码快速上手指北


    最近入职新公司,在学习产品业务文档的时候,发现团队内部没有业务文档沉淀;虽说师兄能培训一些业务知识,但这些都是“面”层面的内容,掌握核心业务,必须了解核心业务知识以及易踩坑点。没有业务文档怎么办呢?那就必须扒项目代码中业务的实现逻辑了。当然程序员在工作过程中,会遇到很多需要阅读代码的场景,比如学习技术框架源码、review他人的代码、维护老产品等等。毫无疑问,阅读代码是程序员的基本功,这项基本功是否扎实,会在很大程度上影响一个程序员在技术上的成长速度。

    啃了将近两周的项目代码,本人也总结出来一些快速吃透项目代码的套路,下面就给大家分享一下我的经验。

    目的

    凡事预则立,不预则废;带着目的性做事情更容易成功,读代码也是一样。当我们需要阅读代码时候,一定要明确自己的目的,无非有以下两种目的:

    • 学习框架源码
    • 产品代码维护

    计划

    明确目的后,必须给自己制定完成这件事情的过程中各个节点应达到的目标。主要是为了check你的学习质量。比如:学习Kafka项目源码,你的目的是为了在新的项目中更加游刃有余使用Kafka解决业务问题;那么针对你投入的学习时间,可以制定三个阶段的学习计划以及要达成目标;各个目标建议给自己制定一个需要实践的任务,这样通过项目检验自己的学习质量。

    上下文

    什么是上下文呢?举个例子:高考,我们参加高考基本上务必需要掌握小学、初中、高中各个年级的基础知识,这样我们在考场做题时候就可以将这些知识应用于解题,那么这些基础知识就是上下文。回到我们源码学习场景中,上下文可以分为 通用技术、业务基础。

    • 业务基础:每一份有实际意义的源码都离不开业务,必须先对业务有基本的概念。
    • 通用技术:每个复杂的项目肯定是运用了各种保证业务实现的技术框架。就Java语言实现的项目而言,Spring框架、分布式框架、消息队列框架、分表分库框架等这些基本都会涉及到。学习项目代码前,如果不懂这些框架,那么看代码的过程就像看天书一样。
    • 其他资源:能帮你解决看代码过程中遇到问题的工具都可以称之为资源。

    工具

    工欲善其事必先利其器。利用工具可以让我们事半功倍,我在学习过程中用到的工具如下:

    • PlantUML,这是一款IDEA 插件,即安装即用,非常方便。可以让你随时绘制各种图(类图、时序图、流程图等),而且语法也相当简单。传送门
    • 飞书云空间、石墨文档、幕布等,记录阅读源码过程中的关键点、心得体会、分析过程
    • Visual Paradigm,用于绘制简单的框图,表述源码的模块划分、层次结构等.
    • xmind 8, 画思维导图,可以将学习的内容铺成一个面。

    笔记

    在阅读源码的过程中,做笔记是必须的。因为代码不是自己写的,很难很快在脑子里刻下印记,经常是看着这里忘了那里,早上觉得弄懂了数据流向,但是中午吃个饭,下午开始干活的时候又忘了原先的链路。所以,多记笔记就显得尤为重要。

    • 建议用软件(飞书云空间、石墨文档)记录,这样可以将文档整理成册,将来也可以给团队增加文档产出。
    • 关键action尽可能详细记录,但不必看到什么记录什么。比如弄明白了某个子模块的逻辑、某个类的作用、某些函数的调用关系时再记录,否则记录这个动作本身会打断思考。
    • 每天工作结束,记录学习进度,记录疑问(以及明天找谁进行咨询),明日计划等。

    总结

    下面的一些经验供大家参考:

    • 将业务模型和数据模型建立映射关系。
    • 理清模块间的依赖关系。
    • 找出关键action代码,并画出时序图、流程图。
    • 如果能运行代码,强烈建议调试代码,核心方法打断点,这样可以更清楚调用链路。
    • 读不懂才要读,想不明白才要想,这是进步和成长的开始。
  • 相关阅读:
    golang-----giao起来
    Django-----你醒了吗?
    linux
    dapper之连接数据库(Oracle,SQL Server,MySql)
    mongodb 物理删除数据
    一生难得的偶遇
    奇怪的电话
    我的魔兽争霸
    第四章 吃饭
    第三章 百花谷
  • 原文地址:https://www.cnblogs.com/qualityassurance/p/13982703.html
Copyright © 2020-2023  润新知