2011-04-13 169 views
5

我被要求重新编写(从头开始)现有的C#winforms应用程序。不幸的是,在过去的三到四年里,至少有十几个不同的开发者修改了这些代码,但他们中没有一个似乎遵守任何类型的编码标准。要说这个代码基础是一团糟,就会礼貌地说出来。考虑到代码的大小(约24k行)以及代码对我来说是全新的事实,我希望找到某种实用工具,这将有助于我更快地理解该应用程序如何在高层工作。请记住,在这段代码中似乎没有很好的OOP实践,所以我需要一些比类图更详细的内容。我已经看到了生成序列图的参考,这可能更像我正在寻找的,但我只有VS2010 Premium,我的印象是这个功能只与VS Ultimate SKU一起提供。我可以访问当前版本的.NET Reflector,并且我看到一些人提到有插件可能是有用的,但我没有任何特定的名称。c#代码流程图/可视化工具?

+0

为了找出给定任务中涉及的代码,我会使用代码覆盖工具,如PartCover或更好的商业替代方法。这通常会帮助我理解。但是,我并没有将其作为答案发布,因为我实际上并未记住如何执行此操作。 – Qwertie 2011-04-13 17:02:21

回答

6

重写从零开始的代码可以是一场灾难:请参阅本:http://www.joelonsoftware.com/articles/fog0000000069.html

这不是一件容易的事,你提到有你面前一打开发商。 每个开发者背后都有他自己的方法论和他自己的系统逻辑。每个人 都是自己的方式。

这里有一些问题,你可能会遇到

  • 继另一开发商逻辑
  • 无论开发商还是各地或改变位置或者更糟改变工作
  • 查找或者即使存在技术规范(这是最重要的)
  • 旧版代码,最初写入,然后修补,然后再次修补...
  • 自定义可能已整合或应用
  • 安全中写,如果有任何

除了有一堆流程图的代码/应用的最好的事情,要求或获得的图是技术规范 。该计划的目的是什么,并且考虑到其他12个人在这方面的工作是你可以承担的事情?

您提到过OOP,您是否打算采用意大利面代码并进行整个重写以适应面向对象的模型?如果这样做有很多工作......并且有12个事先的大脑在工作,那么某个人的逻辑必然会让你失望。

对不起,我没有最好的建议,但这可能是一项艰巨的任务......尤其是如果你之前的开发人员不在那里。

见这些所谓的线程的详细信息:

+0

嗨,乔恩。感谢您的快速回复。你有很多好的观点。不幸的是,这是我被告知“这是我们要做的”的情况之一。实际上,我确实向雇主提出了一些同样的论点,但他们已经决定重写是必要的,并且承诺要这么做(或者让我按照具体情况任命)。 :-( – user685869 2011-04-13 14:12:56

+0

)如果你必须重写(我个人喜欢那些:D),你可以尝试隔离一些功能 - 将有用的部分复制到新的项目中,并编写单元测试 - 以便在新版本中使用。编写一个新的GUI应用程序我建议学习更新控制 - http://loyc-etc.blogspot.com/2011/04/update-controls.html - 一旦你弄清楚了,它会加速开发。 – Qwertie 2011-04-13 17:06:47

0

我很确定,虽然整体无效,但现有代码的某些部分非常好。我建议你把这些部分,单元测试周围和gasp,复制粘贴到你的新项目。这样,你会一点一点地将你的混乱过滤成重新构造和测试的东西。

另外,我一直想要做的事情是打印大量代码并通过切割(使用真正的金属切刀)并将它们重新粘贴在一起来展示它们的使用方式。