- 用好Notion软件,利用此软件可以按层级关系将零散代码逻辑在脑海中形成一个整体框架,也可以结合xmind等软件更直接地展示代码结构。
- 运行软件项目,通过输入输出来给人脑提供关键代码链路的思绪。比如如果项目是用python语言构建的,通过添加print语句实现变量的跟踪。还可以利用代码调试功能,比如断点,逐步执行代码,实时查看变量变化和函数调用情况。
- 利用好visio这类软件表示更多的逻辑关系。还可以使用 UML 图(如类图、时序图)来表示系统的静态结构和动态行为,这可以帮助更好地理解面向对象设计。
- 分清楚影响理解框架代码的原因是啥,如果是各个小的模块理解错误,那就需要逐个击破来理解整体。在理解小模块时,可以结合单元测试。编写和运行单元测试不仅能验证模块功能,还能帮助理解模块的输入输出和依赖关系。
- 对大的目录进行归纳总结,最好是记录在Notion上,记录关键模块、类、函数的作用和关系,以便日后查阅,因为代码较多,后续如果再来看可能忘记了,忘记了就需要再看一遍,相当于思维不集中会影响效率,有些时候可能总结的内容(也就是压缩过的内容)就足以理解了
- 需要高度集中,最好进入心流状态,最好用一整段时间去理解,下次理解相当于需要再从代码和文档中找到当时的理解水平。
- IDE的全局关键字检索功能很有用,比如vscode可以显示所有包含指定关键字的文件引用,可以帮助构建代码框架逻辑。VSCode甚至系统都要将其视为软件的一部分,任何能够辅助代码理解的设计都可以用上,软件项目开发者设计项目时参考了面向对象设计规范,同样分析别人写的代码也可以采用面向对象的方法对代码进行简化。越是优秀的代码越可以通过面向对象的方法进行简化。除了 VSCode,还可以使用更专业的代码搜索工具,如 Sourcegraph 或 Opengrok,支持跨项目搜索和代码导航。
- 面向对象思维,通过对象,模块,组件来构建系统的认识。可以学习设计模式(Design Patterns),如《设计模式:可复用面向对象软件的基础》一书中提到的23种经典设计模式,帮助理解和应用面向对象思想。
- 明确改动哪些地方对系统运行有影响,哪些地方改动对系统没有影响及如何在系统上增加功能,如何在增加功能的同时不破坏原有系统的优良设计,如何重构原来系统中不合理的逻辑设计。在进行代码改动前,可以使用代码覆盖率工具(如 Coverage.py)和静态代码分析工具(如 SonarQube),评估改动的潜在影响和风险。
- 阅读官方文档,理解开发者的设计思路。还可以查阅社区文档、技术博客和开发者论坛,获取更多实战经验和最佳实践。
- 算法能力的学习,大型软件项目一般开发人员水平较高,用到了大量数据结构与算法的思想,如果算法能力不足再看到相关代码实现会觉得理解不足或觉得这些算法是框架本身的创新。建议系统学习算法与数据结构,可以参考《算法导论》(CLRS)这本书,并在 LeetCode、HackerRank 等平台上实践。
- 如果能问原开发者还是要先问,理解框架的目的就是应用框架,如何快速的掌握一个框架的能力是追求的目标,然后再谈框架的进阶理解,否则进阶学习也是低效的。在问原开发者时,可以提前准备好问题,并尝试提出一些自己的理解和解决方案,展示你的思考过程,往往能得到更有针对性的指导。
不要排斥打开编辑器看项目源码,就和新手程序员不会看报错信息一样,因为其中包含着指引,这是大量项目经验才能养成这种习惯,如果想要快速迭代技术能力,需要学会去延伸。
程序员的理解能力很重要。对任何能够通过编译器器检查的代码先要有基本的尊重,如果想站在别人的代码基础上提高开发效率,必须要理解别人的代码,这期间可以反思哪些代码质量不高,可以如何改进,程序员是一种特殊的用户,适当抱着看看用户是如何想的思维进行代码理解工作。对于本来就优秀的代码,要能够像看报错信息那样有耐心的理解。