我正在C#中寫一些代碼,我注意到下面的情況。我想知道如何讓這個更優雅和容易維護。方法重載或更優雅?
如果我有以下與重載
public void DoSmtg(string a) { DoSmtg(a, 0, 0f); }
public void DoSmtg(string a, int x) { DoSmtg(a, x, 0f); }
public void DoSmtg(string a, int x, double d) { // method logic }
情景說,現在我需要添加另一個布爾參數。我將不得不修改這
這是一個非常簡單的例子。可以說有10個以上版本的DoSmtg()方法。很明顯,這段代碼有味道。雖然超載是相當有效的,它顯然使,因爲它很難維持這樣的代碼:
有很多方法將被寫入
並不明顯,其方法被調用,直到縝密偵查(特別是如果方法有多個參數)
方法被越來越多通過參數列表
添加了新的參數需要在很多地方變化poluted(想想實現方法具ds以上從多個不同位置調用)
什麼是一種優雅,簡單和良好的方式來避免這樣的事情?
如果這些參數有任何相關性,請考慮將它們打包到一個類中,並使'.DoSmtg'成爲該類的一個方法。 –
@JeroenMostert說什麼;我只是在輸入相同的評論。 :)或者即使'DoSmtg'不是該類的成員,也許這些形式是相關的配置數據;那麼專門爲這個概念進行抽象並將其傳遞給'DoSmtg'可能是值得的。 (當然,這只是將問題推到了一個級別;現在,您對抽象的構造函數也有同樣的問題。) –
https://en.wikipedia.org/wiki/Builder_pattern – sstan