qt c ++新的类似方法。我是否重载方法,编写新方法或使用默认参数?

时间:2016-03-08 15:52:58

标签: c++ qt methods overloading default-parameters

我有一个问题:

我有一个庞大的C ++程序,我必须根据新的需求进行调整。在程序中我有一个现有的方法,在我的代码中使用了大约20次

void doSomething();

现在我需要在程序中使用一个非常相似的新方法(使用一次或两次)。设置标志时,此新方法需要执行类似的操作。我有几个想法如何编码。有没有最好的解决方案/风格呢?

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

void doSomethingElse();

创意2: 重载我的方法(但仍然重复代码)

void doSomething(bool myFlag);

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

void doSomething(bool myFlag=false); 

有最好的解决方案吗?或者更好的解决方案?

谢谢

Merchaldes

2 个答案:

答案 0 :(得分:2)

将旧方法的公共部分分离为私有/受保护的帮助方法。然后编写两个公共方法,以便调用辅助方法。

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

使用不同命名的方法明确说明每个调用的作用,因为方法名称直接说明它而不需要检查arg实际意味着什么缺失/ true / false。但是如果你想用可选的arg和单一方法(至少在公共和受保护的接口中)这样做,最好声明一个具有描述性值名称的枚举(同样,如果你需要第三个值,那么它就是' s容易添加,与布尔值不同)。这就是Qt通常做的(example)

答案 1 :(得分:0)

您可以将不同的部分外包给私人助手功能。然后使用所需的参数重载您的函数。