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

标签 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); 

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

谢谢

商品

最佳答案

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

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

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

关于c++ - qt c++ new 类似的方法。我是重载方法、编写新方法还是使用默认参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35871932/

相关文章:

c++ - 如何获取可变参数宏中每个参数的名称?

C++:打印/分配简单数组打印乱码

c++ - 如果 cpp 中的数据类型条目不正确,如何允许多个输入?

c++ - Qt:带有关闭、最小化和帮助按钮的 QMainWindow

c++ - QT 中的 SQLite CREATE 查询

c++ - 将 FBO 混合到默认帧缓冲区

java - 无法将一个类的对象访问到另一个类中

ios - Swift 3 API 在子类中重命名

作为类成员的智能指针的 C++11 索引 vector

java - 方法重载和抛出异常处理