这会被视为不良的编程习惯吗?

时间:2018-06-21 02:54:41

标签: c++

我遇到一种情况,我想在一个非常大的旧版代码库中使用默认参数作为参考,以进行修复。

static bool _defaultValue = false;
bool SomeFunction(const SomeComplexObject& iObj, bool& isSomeVal = _defaultValue )
{
        // ... code
}

我的问题是在名称空间中使用静态变量,而该名称空间本身只是悬而未决。

此代码将在发货之前进行检查,但是我不确定是否有这样的悬挂静态变量是否被视为不良做法。

没有变量,您将没有默认值作为参考。我的选择非常有限,无法进行其他更改以达到理想的效果。

这会被认为是“骇人的非专业编码”吗?

1 个答案:

答案 0 :(得分:9)

我的建议是:

  1. 删除全局变量。
  2. 请勿将默认值用作参考参数。
  3. 创建仅具有一个参数的函数重载。
  4. 从第二个函数中调用第一个函数。

bool SomeFunction(const SomeComplexObject& iObj, bool& isSomeVal)
{
   // ... code
}

bool SomeFunction(const SomeComplexObject& iObj)
{
   bool dummy;
   return SomeFunction(iObj, dummy);
}

客户端代码可以调用适合其上下文的任何函数。