首页 > 解决方案 > 这会被认为是不好的编程习惯吗?

问题描述

我有一种情况,我想在一个非常大的遗留代码库中使用默认参数作为参考来进行修复。

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

我的问题是在命名空间内使用静态变量,它本身就在那里晃来晃去。

这段代码将在发货前进行审查,但我不确定拥有像这样的悬空静态变量是否被认为是不好的做法。

如果没有变量,您将无法获得参考的默认值。我的选择非常有限,无法进行其他更改以获得预期的效果。

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

标签: c++

解决方案


我的建议是:

  1. 删除全局变量。
  2. 不要为引用参数使用默认值。
  3. 创建一个只有一个参数的函数重载。
  4. 从第二个函数调用第一个函数。

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

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

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


推荐阅读