我被要求重新编写(从头开始)现有的C#winforms应用程序。不幸的是,在过去的三到四年里,至少有十几个不同的开发者修改了这些代码,但他们中没有一个似乎遵守任何类型的编码标准。要说这个代码基础是一团糟,就会礼貌地说出来。考虑到代码的大小(约24k行)以及代码对我来说是全新的事实,我希望找到某种实用工具,这将有助于我更快地理解该应用程序如何在高层工作。请记住,在这段代码中似乎没有很好的OOP实践,所以我需要一些比类图更详细的内容。我已经看到了生成序列图的参考,这可能更像我正在寻找的,但我只有VS2010 Premium,我的印象是这个功能只与VS Ultimate SKU一起提供。我可以访问当前版本的.NET Reflector,并且我看到一些人提到有插件可能是有用的,但我没有任何特定的名称。c#代码流程图/可视化工具?
回答
看一看NDepend,它是一个代码manageme NT工具,可以帮助你感谢很多code querying,code rules,smart technical debt estimation,依赖graph和矩阵,code diff因为基线...
重写从零开始的代码可以是一场灾难:请参阅本:http://www.joelonsoftware.com/articles/fog0000000069.html
这不是一件容易的事,你提到有你面前一打开发商。 每个开发者背后都有他自己的方法论和他自己的系统逻辑。每个人 都是自己的方式。
这里有一些问题,你可能会遇到
- 继另一开发商逻辑
- 无论开发商还是各地或改变位置或者更糟改变工作
- 查找或者即使存在技术规范(这是最重要的)
- 旧版代码,最初写入,然后修补,然后再次修补...
- 自定义可能已整合或应用
- 安全中写,如果有任何
除了有一堆流程图的代码/应用的最好的事情,要求或获得的图是技术规范 。该计划的目的是什么,并且考虑到其他12个人在这方面的工作是你可以承担的事情?
您提到过OOP,您是否打算采用意大利面代码并进行整个重写以适应面向对象的模型?如果这样做有很多工作......并且有12个事先的大脑在工作,那么某个人的逻辑必然会让你失望。
对不起,我没有最好的建议,但这可能是一项艰巨的任务......尤其是如果你之前的开发人员不在那里。
见这些所谓的线程的详细信息:
嗨,乔恩。感谢您的快速回复。你有很多好的观点。不幸的是,这是我被告知“这是我们要做的”的情况之一。实际上,我确实向雇主提出了一些同样的论点,但他们已经决定重写是必要的,并且承诺要这么做(或者让我按照具体情况任命)。 :-( – user685869 2011-04-13 14:12:56
)如果你必须重写(我个人喜欢那些:D),你可以尝试隔离一些功能 - 将有用的部分复制到新的项目中,并编写单元测试 - 以便在新版本中使用。编写一个新的GUI应用程序我建议学习更新控制 - http://loyc-etc.blogspot.com/2011/04/update-controls.html - 一旦你弄清楚了,它会加速开发。 – Qwertie 2011-04-13 17:06:47
我很确定,虽然整体无效,但现有代码的某些部分非常好。我建议你把这些部分,单元测试周围和gasp,复制粘贴到你的新项目。这样,你会一点一点地将你的混乱过滤成重新构造和测试的东西。
另外,我一直想要做的事情是打印大量代码并通过切割(使用真正的金属切刀)并将它们重新粘贴在一起来展示它们的使用方式。
- 1. 可视化代码流的工具(C/C++)
- 2. 用于从Android代码生成可视化图表的工具
- 3. C++代码可视化
- 4. 用于球拍程序的代码可视化工具
- 5. C代码格式化/美化工具
- 6. 代码流可视化软件
- 7. 了解代码如何工作的可视化工具
- 8. 可视化多线程C++应用程序调用图,多线程代码覆盖率的工具?
- 9. 如何可视化工作流程?
- 10. Objective-C的类可视化工具?
- 11. C可视化算法工具?
- 12. Web图形可视化工具
- 13. flash builder 4 - 逆向工程工具(代码到流程图或UML图)
- 14. 阅读代码 - 有用的可视化工具和浏览器工具
- 15. 是否有任何PHP代码可视化工具?
- 16. 用于调试递归代码的可视化工具
- 17. MATLAB代码分析和可视化工具?
- 18. Mysql可视化工具
- 19. XML可视化工具?
- 20. Cloudera可视化工具
- 21. 可视化开发工具
- 22. 分析可视化工具?
- 23. .NET datarow可视化工具?
- 24. 从纯文本中可视化工作流程图
- 25. 该流程图可以用结构化代码
- 26. C++代码分析工具
- 27. C#Reindent代码工具
- 28. 可视化OO PHP代码
- 29. 在Objective-C中是否有任何可视化代码复杂性或图形方法调用的工具?
- 30. 程序可视化逻辑流程
为了找出给定任务中涉及的代码,我会使用代码覆盖工具,如PartCover或更好的商业替代方法。这通常会帮助我理解。但是,我并没有将其作为答案发布,因为我实际上并未记住如何执行此操作。 – Qwertie 2011-04-13 17:02:21