Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 接管他人';s代码_C#_.net_Winforms - Fatal编程技术网

C# 接管他人';s代码

C# 接管他人';s代码,c#,.net,winforms,C#,.net,Winforms,我正在接管别人的代码。有什么好方法可以尽快了解程序员的工作?我一直在运行它,一步一步地浏览它并查看调用堆栈。我还能做什么 很抱歉,我忘了提及,但文档很少,我一直在尝试解决一些简单的问题。谢谢 设置日志记录以观察事件发生的顺序 阅读此处:修复其中的一个简单问题 编辑: 然后修复更大的问题,并开始编写文档和单元测试,这些都是您所了解的领域。以这些领域为基础,总有一天你会了解整个系统。文档?读取代码本身,而不在调试器中运行 除此之外,您正在做我将要做的事情。我发现在开始修复bug/修改之前,我无法完全

我正在接管别人的代码。有什么好方法可以尽快了解程序员的工作?我一直在运行它,一步一步地浏览它并查看调用堆栈。我还能做什么


很抱歉,我忘了提及,但文档很少,我一直在尝试解决一些简单的问题。谢谢

设置日志记录以观察事件发生的顺序


阅读此处:

修复其中的一个简单问题

编辑:
然后修复更大的问题,并开始编写文档和单元测试,这些都是您所了解的领域。以这些领域为基础,总有一天你会了解整个系统。

文档?读取代码本身,而不在调试器中运行


除此之外,您正在做我将要做的事情。

我发现在开始修复bug/修改之前,我无法完全学习代码。如果原来的程序员还在,那么在实现更改之前讨论更改会有所帮助。

通常最好的方法是开始修复代码中的小错误。你花在它上面的时间越多,这是学习代码库的唯一方法。学习代码库没有神奇的方法。这将需要数周、数月甚至数年的时间,这取决于复杂性。然而,对于大多数通用业务系统,启动时间大约为6个月的代码知识和6个月的行业知识,以真正理解所有内容。

日志记录有助于了解代码的功能

如果你有一个版本控制系统,你可以去看看程序员对代码做了什么改变,浏览一些历史记录


我发现有时尝试理解程序员的代码风格很有用,这有助于我理解他如何思考问题并解决问题。

开始编写单元测试,因为这会让你使用他的类/方法,你会做两件事,学习它,我要做的第一件事就是看看最简单的对话框及其代码,主要是分析编码风格,看看开发人员喜欢如何安排代码


一旦您知道了编码风格,以及文件中所有内容的大致位置(或者如果内容是随机输入的——即使知道这一点很有帮助),就可以更轻松地查看其他所有内容。

如何快速理解其他人的代码,这是一个没有捷径的问题。特别是如果它是充满了黑客和没有文件可用

您应该尝试理解类结构,并在调试器帮助下执行软件的正常流程


不要跳过太多的代码部分“哦,我想我知道这部分的功能”。不,你没有。你会对我们在代码中发现的“创新”感到惊讶。

如果可以的话,与他人代码的用户(最终用户或其他必须使用其代码的开发人员)交谈。这会让你们对他人代码的质量有一种感觉——它发布的时候有几个bug,还是经过了6个月的修改才正确?开发人员在制作一个精致的应用程序时是很小心,还是弄得一团糟?这应该会让您知道是需要稍微调整代码还是开始替换大块代码。

我喜欢开始向代码的方法添加测试,如果它们还不存在的话。弄清楚如何覆盖代码可以让您深入了解代码路径、预期输出应该是什么等等。

其他人所说的一切都可以准确地了解编码器所做的工作


另一种看待它的方式是学习程序本身。像用户一样深入地使用应用程序,并了解程序本身的功能。一旦你彻底理解了最终的系统,你就会更容易理解它是如何编写的以及为什么编写的。

记录你所学到的关于类、函数等的知识也不会有什么坏处,只是为了让下一个家伙(或另一个受雇从事相同工作的人)知道


另外,当我以前做过这项工作时,我发现在尝试理解代码之前最好先使用这个程序。可能听起来很明显,但在那之后,你看到的更多东西会有意义。正如其他人所建议的那样,单元测试也可能有同样的帮助。(当您有足够的信心进行重构时也会很有帮助。)

有一件事可以帮助我更快地学习系统,那就是自己编写文档

  • 我有一个概览
  • 我会看到很多错误/糟糕的设计决策。这使得订购和优先购买更容易。(我将修复那些真正重要的错误,而不是选择一个不相关的错误并解决它)
  • 我稍后会有一个文档
  • 文档化将使重构/重写到诉讼程序的合理化变得更容易

我认为,了解代码的功能后,编写代码是为了解决高级别的问题,这是一个良好的开端。有了这一点,一个人也可以在精神上,在较高的层次上,尝试想象如何使用所使用的类型工具来解决这样的问题

从那时起,查看代码将具有某种意义,它将有助于遵循原始开发人员的想法。此外,当你迷路时,你会很快发现

我还认为代码应该记录自己,因为我的经验大多数时候是代码之外的文档,大多数时候是与代码不同步的,可能会产生误导。因此,这里和那里的一些注释、类标题、方法注释也应该有所帮助

我第一次继承别人的密码时,两天后我患了偏头痛,我是一个噩梦


祝你玩得开心。

我首先从数据库开始

根据我的经验,理解数据模型是在阅读代码时提供上下文的关键。(这假设数据模型不是一个通用键值通用实体表)

我花了大部分时间