2011-10-05 47 views
1

我必須處理一個項目,其他人已經複製並粘貼了相同的類大約12次,添加了一些定製,但主要是,類的結構非常相似,因爲它們是相互複製的。抽象多個C#類

我很想重構代碼,因爲我無法忍受看代碼庫。

是否有一種工具可以自動化這些頭痛的問題,即將相同的屬性和方法提取到父類中,並使其他類繼承它?

+10

我就是那個工具一次...... –

+0

把它想象成一個DIY項目 – Asdfg

+0

如果是c#=你可以去'提取界面'選項,這有些幫助。 – 2011-10-05 00:16:16

回答

3

與arivman相似,請給出Resharper一槍。 30天免費試用,每人可獲得終身許可(意味着可以將其帶回家,如果他們允許的話,還可以接受其他工作)。

+0

有一個[Extract Superclass](http://www.jetbrains.com/idea/webhelp/extract-superclass.html)功能,但所示的示例是Java。還是值得一看。 – MPelletier

+0

我對ReSharper有相當多的經驗,並且會證明它是一個非常有用的工具,不僅可以執行偉大的重構,還可以提供靜態分析。 –

+1

Resharper是一個令人難以置信的工具,但我不認爲它們提供了比較重構,可以選擇多個類並提取相交符號。他們的* Extract Superclass *僅基於一個類創建一個超類。 – arviman

2

我不知道任何免費的解決方案(除了自己做),但你可以從KnowDotNet給NET Refractor一槍。他們甚至有30天免費試用!

+0

它說'NetRefactor 2.1.70是Visual Studio 1.1的最新版本......呃,什麼?大聲笑 – Mehrdad

+0

LMAO他們的意思是.NET 1.1(我在他們的網站的另一個頁面中看到了對Visual Studio 1.1,2.0和3.5的另一個引用),所以很明顯網頁作者將框架與IDE混淆了。我沒有在VS 2010和.NET 4上嘗試過,但我猜他們的「Extract Superclass」功能應該可以工作。如果沒有,請嘗試創建.NET 1 proj,包括這12個類,註釋掉任何.net 4代碼,提取超類,然後手動將其複製/粘貼。 – arviman

1

我還建議您在選擇Natural selection之前使用Clone Detective之類的工具,可能會出現更多隱藏的重複。

Resharper squigglies一定會給你一些關於代碼氣味和鍵盤組合的提示,然後在jiffy中修復。

你也可能使用here中的一些零碎,我個人發現分支和標記在這些情況下非常有效。在深入研究代碼之前,我認爲任何分析盡職調查都有很長的路要走。

0

這裏我們用simian找到重複的代碼。但是,您仍需要手動干預2刪除或更新它。