我被要求重新編寫(從頭開始)現有的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