Language agnostic 理解大型单片代码的技巧
我正在寻找一些好的技巧来跟踪和理解庞大的代码库。我通常从顶部开始,过了一段时间,我就会迷失在函数的一些细节中。因为我已经深入浅出了,所以备份和步入正轨的过程是令人厌倦和疲惫的。当您试图理解庞大的代码库时,如何跟踪跟踪跟踪 我通常会打开一个记事本,试着跟踪这些步骤。但是在理解代码和记笔记之间的转换对我来说并不是很有效。有什么建议吗Language agnostic 理解大型单片代码的技巧,language-agnostic,legacy-code,Language Agnostic,Legacy Code,我正在寻找一些好的技巧来跟踪和理解庞大的代码库。我通常从顶部开始,过了一段时间,我就会迷失在函数的一些细节中。因为我已经深入浅出了,所以备份和步入正轨的过程是令人厌倦和疲惫的。当您试图理解庞大的代码库时,如何跟踪跟踪跟踪 我通常会打开一个记事本,试着跟踪这些步骤。但是在理解代码和记笔记之间的转换对我来说并不是很有效。有什么建议吗 编辑:我正在考虑一种情况,我想修复一个bug。我怀疑如果我将我的理解局限于存在缺陷的函数/类,我将对我的修复没有信心。通常我尝试做的事情是避免试图从头理解代码。我通常会
编辑:我正在考虑一种情况,我想修复一个bug。我怀疑如果我将我的理解局限于存在缺陷的函数/类,我将对我的修复没有信心。通常我尝试做的事情是避免试图从头理解代码。我通常会查看代码中的所有类和包,看看哪些类和包最突出,我可能有兴趣进一步查看。专注于理解这个小部件是如何独立工作的
然后,我继续讨论另一段代码,等等,希望在足够的时间后,我能理解所有代码是如何工作的,从而更容易理解全局。我从代码中的概念/逻辑开始。采用一个基本概念/逻辑并遵循它,然后了解开发人员是如何尝试的。在这个过程中,我总是找到相关的细节,然后再研究这些参数 一旦您有了代码的基本模型,并且了解了开发人员的想法,您就可以从中学习。一直为我工作:)
编辑:如果代码非常大,也可以编辑。更高级别的建模有帮助。将代码划分为模块,并了解它们是如何相互连接的。稍后,逐个深入到模块中,并遵循我上面提到的技巧。首先回答问题:你想做什么 可能的问题
- 一旦确定了需要进行更改的区域,请检查谁在使用此代码以及以何种方式使用此代码。小心地添加日志语句并运行应用程序可能会达到目的
- 编写测试以记录当前行为(这些行为应为绿色,并保持绿色)
- 编写测试,记录更改后的更改行为(以红色开头)
- 找你的钱。这将使之前的测试变成绿色
- 运行手动测试以确保应用程序按预期工作
- 选择任意一行代码并继续阅读 直到你找到一些(比如)功能或 吸引你注意力的课程
- 复制其名称并用注释标记块('found:[name of thing]',递增地添加所跟随的每一项内容)
- 然后搜索 这个词贯穿整个代码
- 你会在地图上找到真正的“东西” 这样,请记下哪一行 它的出现和作用