【发布时间】:2016-06-22 16:01:01
【问题描述】:
我有一个问题:
我有一个庞大的 C++ 程序,我必须适应新的需求。在程序中,我有一个现有方法,在我的代码中使用了大约 20 次
void doSomething();
现在我需要在我的程序中使用一种非常相似的新方法(使用一次或两次)。设置标志时,此新方法需要 doSomethingSimilar 。我有几个想法如何编码。有没有最好的解决方案/风格来做到这一点?
想法 1: 编写另一个与 doSomething() 几乎相同的方法。但这意味着复制代码。
void doSomethingElse();
想法 2: 重载我的方法(但仍然重复代码)
void doSomething(bool myFlag);
想法 3: 使用默认参数并在旧方法 doSomething() 中包含 if 语句。
void doSomething(bool myFlag=false);
有没有最好的解决方案?或者更好的解决方案?
谢谢
梅尔卡德斯
【问题讨论】:
-
这是一个一般的 OO/Architecture/C++ 风格的问题,最好的答案是有点依赖于上下文/环境,这个问题实际上没有提供。建议购买一些介绍 C++ 编程细节的 C++ 书籍,例如 Scott Meyers 的书籍,或者在网上搜索此类讨论。
-
代码重复不一定是坏事——它取决于代码的意图。也就是说,如果 X 和 Y 相同,并且应该永远和永远相同,无论 X 和 Y 的内容如何,那么这可能是一个糟糕的重复。如果代码是巧合地重复 - X 和 Y 恰好是相同的现在 - 那么代码重复可能是最好的解决方案。过早地“不重复”(“DRIED”?)代码可能会变得一团糟。
标签: c++ qt methods overloading default-parameters