2011-04-13 176 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,複製粘貼到你的新項目。這樣,你會一點一點地將你的混亂過濾成重新構造和測試的東西。

另外,我一直想要做的事情是打印大量代碼並通過切割(使用真正的金屬切刀)並將它們重新粘貼在一起來展示它們的使用方式。