我正在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