我有一个问题:
我有一个巨大的 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/