我有兩個項目的解決方案,每個都生成另一個Windows應用程序使用的單獨的dll。每個這些項目有一個稱爲MyActions只有一個方法,像這樣以正確的方式做DRY事情
PROJECT1
public class MyActions
{
public SomeTypeA DoJob(string str1, string str2)
{
}
}
項目2
public class MyActions
{
public SomeTypeB DoJob(string str1)
{
}
}
兩個返回類型,這兩個類是作爲類低於
public class SomeTypeA
{
public string stringA { get; set; }
public int someInt { get; set; }
}
public class SomeTypeB
{
public string someStringA { get; set; }
}
在這些單個項目的兩個類中,DoJob的方法幾乎有80%的代碼是相同的。 Project1是其MyActions
類的DoJob
方法有一些特定於僅Project1的額外位的人。 現在這裏是扭曲的.. Project1最終將被廢棄,其DLL將不再使用。我想以最好的方式編寫代碼,以確保沒有重複的代碼,所以我不必進行任何修改以刪除Project1中止後Project2中任何不需要的代碼。
我想使用繼承和重寫DoJob方法。如果它們的返回類型不同並且它們具有不同的輸入參數,它將如何工作?也許將Project1的MyActions類中的參數之一推送到其構造函數?我也想在Project1中添加一個Project2的MyActions類的鏈接。但不知道如何繼續實施,而不是重複自己,或者以後可能遇到無法預料的問題。任何提示,建議?
如果這些方法接受不同的參數,並返回不同的類型,那麼我覺得它們是不同的。你有更真實的例子嗎?這些類如何在邏輯上相關? – Matthew
這裏有X行代碼,它們完全相同。在這兩個類的方法中,行都是直線.Project1的X + 5%多於只針對Project1的行。這兩個類都在同一類型的文檔上工作,並對其執行相同的操作...除Project1外,其他一些作業更多。它的那些準確重複代碼的X行使我困擾。 – user20358
@ user20358你可以將這些代碼塊移動到單獨的工具類嗎?什麼'MyDocumentFinder'或'MyDocumentWriter'(很難說具體是什麼),並將關鍵信息傳遞給那些目的是做一個小單元任務的方法/對象? –