c++ - 这会被认为是不好的编程习惯吗?
问题描述
我有一种情况,我想在一个非常大的遗留代码库中使用默认参数作为参考来进行修复。
static bool _defaultValue = false;
bool SomeFunction(const SomeComplexObject& iObj, bool& isSomeVal = _defaultValue )
{
// ... code
}
我的问题是在命名空间内使用静态变量,它本身就在那里晃来晃去。
这段代码将在发货前进行审查,但我不确定拥有像这样的悬空静态变量是否被认为是不好的做法。
如果没有变量,您将无法获得参考的默认值。我的选择非常有限,无法进行其他更改以获得预期的效果。
这会被认为是“骇人听闻的非专业编码”吗?
解决方案
我的建议是:
- 删除全局变量。
- 不要为引用参数使用默认值。
- 创建一个只有一个参数的函数重载。
- 从第二个函数调用第一个函数。
bool SomeFunction(const SomeComplexObject& iObj, bool& isSomeVal)
{
// ... code
}
bool SomeFunction(const SomeComplexObject& iObj)
{
bool dummy;
return SomeFunction(iObj, dummy);
}
客户端代码可以调用适合其上下文的任何函数。
推荐阅读
- c# - 如何在 .NET Core 3.1 WebAPI 中托管 Angular 应用程序?
- kotlin - 如何禁用 kotlinx 序列化多态鉴别器?
- javascript - 为什么这本书建议你可以重载 javascript 构造函数?
- node.js - 错误重定向以在本地身份验证后使用 node js express 对护照做出反应
- c# - Automapper ConstructServices在 Umbraco 8 中使用
- mongodb - MongoDB Mongoose 方案嵌套文档结构和关系
- angular - OpenLayer 将地图导出到 Image
- amazon-web-services - GO-AWS-SDK 访问 AWS 上的实例信息
- c - 无法使用 LINES 和 COLS 作为 ncurses 中的常量
- html - 如果仅添加样式,则 html 按钮焦点/轮廓的行为会有所不同,至少在 Chrome 83 中