qt c++ new 类似的方法。我是重载方法、编写新方法还是使用默认参数?

qt c++ new similar method. Do I overload method, write new method, or use default parameter?

我有一个问题:

我有一个巨大的 C++ 程序,我必须对其进行调整以适应新的需求。在程序中,我有一个现有方法,在我的代码中使用了大约 20 次

void doSomething();

现在我需要在我的程序中使用一个非常相似的新方法(使用一次或两次)。当设置标志时,这个新方法需要做一些类似的事情。我有几个想法如何编码。有没有最好的 solution/style 来做到这一点?

想法 1: 编写另一个与 doSomething() 几乎相同的方法。但这意味着重复代码。

void doSomethingElse();

想法二: 重载我的方法(但仍然重复代码)

void doSomething(bool myFlag);

想法 3: 使用默认参数并在旧方法 doSomething() 中包含一个 if 语句。

void doSomething(bool myFlag=false); 

是否有最佳解决方案?或者更好的解决方案?

谢谢

梅夏尔德斯

将旧方法的公共部分分离为 private/protected 辅助方法。然后编写您的两个 public 方法,以便它们调用辅助方法。

所以基本上你的选项 1,除了不要重复代码。或者可能是选项 2,如果重载而不是引入新方法名称有意义(在这种情况下,请参见下文)。

使用不同命名的方法明确说明了每次调用的作用,因为方法名称直接说明了它,而无需检查 missing/true/false arg 的实际含义。但是如果你想用可选的 arg 和单一方法来做到这一点(至少在 public 和受保护的接口中),最好声明一个枚举,它具有描述性的值名称(另外,如果你需要第三个值,它是易于添加,与布尔值不同)。这就是Qt通常做的(example).

您可以将不同的部分外包给私有辅助函数。然后用需要的参数重载你的函数。