<分区>
我正在用 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 }
说现在我需要添加另一个 bool 参数。我必须将其修改为
public void DoSmtg(string a) { DoSmtg(a, 0, 0f, false); }
public void DoSmtg(string a, int x) { DoSmtg(a, x, 0f, false); }
public void DoSmtg(string a, int x, double d, bool doIt) { // method logic }
这是一个非常简单的例子。可以说 DoSmtg() 方法还有 10 个版本。显然,这段代码有味道。虽然重载非常有效,但显然很难维护此代码,因为:
要写的方法很多
在仔细调查之前调用哪个方法并不明显(特别是如果方法有更多参数)
方法因不断增长的参数列表而受到污染
添加的新参数需要在很多地方进行更改(想想从许多不同位置调用的上述方法)
避免这种情况的优雅、简单且好的方法是什么?