这会被认为是糟糕的编程实践吗?

Would this be considered bad programming practice?

本文关键字:编程 认为是      更新时间:2023-10-16

我遇到过这样一种情况,我想使用默认参数器作为非常大的遗留代码库中的引用以进行修复。

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

我的问题是在命名空间中使用静态变量只是自己悬而未决。

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

如果没有该变量,则不能为引用使用默认值。 我的选择非常有限,无法进行其他更改以获得所需的效果。

这会被认为是"黑客不专业的编码"吗?

我的建议是:

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

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

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