C# 接管他人';s代码
我正在接管别人的代码。有什么好方法可以尽快了解程序员的工作?我一直在运行它,一步一步地浏览它并查看调用堆栈。我还能做什么C# 接管他人';s代码,c#,.net,winforms,C#,.net,Winforms,我正在接管别人的代码。有什么好方法可以尽快了解程序员的工作?我一直在运行它,一步一步地浏览它并查看调用堆栈。我还能做什么 很抱歉,我忘了提及,但文档很少,我一直在尝试解决一些简单的问题。谢谢 设置日志记录以观察事件发生的顺序 阅读此处:修复其中的一个简单问题 编辑: 然后修复更大的问题,并开始编写文档和单元测试,这些都是您所了解的领域。以这些领域为基础,总有一天你会了解整个系统。文档?读取代码本身,而不在调试器中运行 除此之外,您正在做我将要做的事情。我发现在开始修复bug/修改之前,我无法完全
很抱歉,我忘了提及,但文档很少,我一直在尝试解决一些简单的问题。谢谢 设置日志记录以观察事件发生的顺序
阅读此处:修复其中的一个简单问题 编辑:
然后修复更大的问题,并开始编写文档和单元测试,这些都是您所了解的领域。以这些领域为基础,总有一天你会了解整个系统。文档?读取代码本身,而不在调试器中运行
除此之外,您正在做我将要做的事情。我发现在开始修复bug/修改之前,我无法完全学习代码。如果原来的程序员还在,那么在实现更改之前讨论更改会有所帮助。通常最好的方法是开始修复代码中的小错误。你花在它上面的时间越多,这是学习代码库的唯一方法。学习代码库没有神奇的方法。这将需要数周、数月甚至数年的时间,这取决于复杂性。然而,对于大多数通用业务系统,启动时间大约为6个月的代码知识和6个月的行业知识,以真正理解所有内容。日志记录有助于了解代码的功能 如果你有一个版本控制系统,你可以去看看程序员对代码做了什么改变,浏览一些历史记录
我发现有时尝试理解程序员的代码风格很有用,这有助于我理解他如何思考问题并解决问题。开始编写单元测试,因为这会让你使用他的类/方法,你会做两件事,学习它,我要做的第一件事就是看看最简单的对话框及其代码,主要是分析编码风格,看看开发人员喜欢如何安排代码
一旦您知道了编码风格,以及文件中所有内容的大致位置(或者如果内容是随机输入的——即使知道这一点很有帮助),就可以更轻松地查看其他所有内容。如何快速理解其他人的代码,这是一个没有捷径的问题。特别是如果它是充满了黑客和没有文件可用 您应该尝试理解类结构,并在调试器帮助下执行软件的正常流程
不要跳过太多的代码部分“哦,我想我知道这部分的功能”。不,你没有。你会对我们在代码中发现的“创新”感到惊讶。如果可以的话,与他人代码的用户(最终用户或其他必须使用其代码的开发人员)交谈。这会让你们对他人代码的质量有一种感觉——它发布的时候有几个bug,还是经过了6个月的修改才正确?开发人员在制作一个精致的应用程序时是很小心,还是弄得一团糟?这应该会让您知道是需要稍微调整代码还是开始替换大块代码。我喜欢开始向代码的方法添加测试,如果它们还不存在的话。弄清楚如何覆盖代码可以让您深入了解代码路径、预期输出应该是什么等等。其他人所说的一切都可以准确地了解编码器所做的工作
另一种看待它的方式是学习程序本身。像用户一样深入地使用应用程序,并了解程序本身的功能。一旦你彻底理解了最终的系统,你就会更容易理解它是如何编写的以及为什么编写的。记录你所学到的关于类、函数等的知识也不会有什么坏处,只是为了让下一个家伙(或另一个受雇从事相同工作的人)知道
另外,当我以前做过这项工作时,我发现在尝试理解代码之前最好先使用这个程序。可能听起来很明显,但在那之后,你看到的更多东西会有意义。正如其他人所建议的那样,单元测试也可能有同样的帮助。(当您有足够的信心进行重构时也会很有帮助。)有一件事可以帮助我更快地学习系统,那就是自己编写文档
- 我有一个概览
- 我会看到很多错误/糟糕的设计决策。这使得订购和优先购买更容易。(我将修复那些真正重要的错误,而不是选择一个不相关的错误并解决它)
- 我稍后会有一个文档
- 文档化将使重构/重写到诉讼程序的合理化变得更容易
祝你玩得开心。我首先从数据库开始 根据我的经验,理解数据模型是在阅读代码时提供上下文的关键。(这假设数据模型不是一个通用键值通用实体表)我花了大部分时间