![]() |
1
19
对于复杂的代码库,最大的错误就是试图成为一台计算机。让计算机运行代码,并使用调试器来帮助找出发生了什么。
是的,阅读大量的代码会有所帮助,但是编译器/调试器/计算机可以比您更快地运行代码。 |
![]() |
2
10
一位教授曾经告诉我们把这种情况与爬山作比较。你可能在听一个这样做的人,告诉你往外看是什么感觉。你毫不犹豫地相信那是一个壮观的景象。 然而,你必须开始攀登自己真正了解什么是从顶部的观点是什么样的。 爬到山顶并不重要。仅仅达到地面以上的一个合理高度可能是非常有效的。 但不要害怕开始攀爬。这种观点总是值得任何努力的。 这对我来说一直是个很好的类比。我知道这个问题更多的是关于如何有效地处理代码库的具体技巧。不过,它立刻让我想起了当年的物理课。 |
![]() |
3
8
(这是我不久前发布的一个问题的答案。我做了一些修改以适应这个问题。) 经验告诉我,在学习传统系统时,您有三个主要目标:
这三个部分都非常重要,有一些技巧可以帮助您开始工作。 首先,抵制仅仅用ctrl-click(或者IDE使用的任何方法)绕过代码来理解一切的诱惑。您可能无法以这种方式将每件事情都透视在您的脑海中,特别是当每一行强制您查看多个其他类以了解它是什么时,因此您需要能够在您的头脑中持有多个层次的堆栈。 在可能的情况下阅读文档;它通常帮助您快速获得一个心理框架,在此基础上构建随后的所有内容。 尽可能运行测试用例。 不要害怕问一个知道你是否有问题的人。当然,你不应该把别人的时间浪费在无意义的问题上,但是如果有一些你根本不理解的东西(尤其是对于更多概念性问题,比如“把它作为一个”或其他什么东西来实现不是更有意义),那么在你把事情搞砸,不知道为什么之前,很可能有必要找出答案。 当您最终开始阅读代码时,从一个逻辑上的“主”位置开始,然后从那里开始。不要只从上到下、按字母顺序或任何东西(这很明显)。 |
![]() |
4
6
熟悉大型代码库的最好方法是深入研究。许多项目都有一个需要完成的简单任务的列表,它们通常被保留以帮助人们轻松进入。您应该找到其中的一些并进行工作;您将学到很多关于一般代码大纲和结构的知识,为项目做出贡献,并获得一个简单的回报,这将有助于鼓励您承担更大的任务。 和大多数项目一样,葡萄酒也有很好的资源可供开发人员使用:IRC、wiki、邮件列表和指南/概述。对于大多数令人望而生畏的代码基,在最初的几次修复之后并不那么可怕。葡萄酒真的很大,而且很像果仁,我怀疑在所有系统中都有专家;也不要觉得你需要成为专家。开始做一些对你很重要的事情,然后从那里开始。 我自己也开了几家酒吧,这是一个很好的社区和良好的组织。有很多非常有用的调试消息,这是一个非常酷的项目,可以帮助您进行更长时间的调试。 我们都很感激你的勇气和愿意为葡萄酒提供帮助(它需要帮助)。谢谢,祝你好运。 |
![]() |
5
4
挖进去。想一个你想回答的问题,然后试着找到答案。当你厌倦了阅读代码时,去阅读dev邮件列表, developer's guide 或 the wiki . 不幸的是,要理解一个庞大的代码库,没有一条皇家之路。如果你喜欢这样的事情(我喜欢),你会很开心的。如果不是的话,指南书就不会真正有帮助了,所以你不会真的那么糟糕。 |
![]() |
6
4
寻找一个你想改进的特殊功能。搜索其实现。一旦你找到它,拉上那根稻草,剩下的都会跟着走。 |
![]() |
7
2
最好的办法是通过评论。 我是在讽刺你,因为你了解野兽的微小之处,添加评论,这样你就可以跟踪你的踪迹。 如果您在代码中添加缺少的指南,其他开发人员也会喜欢它。 |
![]() |
8
2
尝试在代码中实现一些微小的更改,这对您来说是可见的。这可能是找到一种输出调试语句的可行方法(并找出输出出现的位置),也可能是更改窗口或桌面颜色的默认大小,或者其他什么。一旦你能 让事情发生 在代码库中,您已经触及了理解的表面,并且可以开始转向更复杂的事情。在这一点上,选择一个稍微有用的目标,您希望代码能够做到,并实现它。或者检查项目的bug跟踪程序,寻找一些小的东西开始。 随时随地记录,随时随地编写单元测试,随时随地重构。当你弄清楚一个程序是怎么做的时,请评论它!! |
![]() |
9
2
|
![]() |
11
1
理解一个大系统的一个好方法是将它分解成它的组成部分,并集中在通过应用程序的特定路径上。 你的调试器是你在这里的朋友,在你想调查的线程中设置一个断点,然后一行一行地检查它的每个部分都做了什么…希望有帮助… |
![]() |
user3802348 · 如何辨别哪些后端文件与前端文件关联? 9 年前 |