避免Qt中的非符号常量
Avoiding non symbolic constants in Qt
在我参与的代码评审中经常出现的一件事是,代码中的"幻数"是一件坏事。
首选方案是在某个位置指定一个符号。
现在我正在处理的是QT sdk。类成员QButtonGroup.checkedId()
将返回-1
作为幻数,表示所选组中没有单选按钮。
如果我写一些类似的东西
if ( buttongroup->checkedId() == -1 )
{
//yadda yadda
}
它将出现在代码审查中。
虽然我当然可以定义一个const static int
符号来给出-1
,但如果Qt
命名空间中定义了相关的常量,我更愿意使用它。
是否已经定义了这样一个符号??
代码评审是关于您的代码,而不是第三方库的代码,因此您不能也不应该处理它。Qt没有任何命名实体可供比较,因此您必须将生成的代码与-1
进行比较。不过,它也有光明的一面:-1
是一个被广泛理解的幻数,所以不应该有任何误解——它被用于许多不同的语言和库中。不管它在这里有多糟糕,我们都必须接受它。
没有预定义这样的符号;你必须自己定义它。
相关文章:
- C++/QT:使用指向私有成员的常量指针作为只读数据共享
- 调试符号中缺少 QObject 类信息(编辑但存在其他 Qt 类)
- 为什么乘以常量有符号整数分数没有优化?
- 为什么我可以隐式地将字符*转换为常量字符*,但不能将无符号字符*
- Qt QSpinbox在设置范围后接受'+'符号
- 为什么不建议使用宏符号常量定义一个固定长度的数组呢
- Qt C++LNK2019:使用QNetworkAccessManager未解析的外部符号
- 与Qt交叉编译到Raspberry Pi 3B+通讯录(协议缓冲区)-错误符号查找错误
- 检测键按事件 - Qt C++上的插入符号 (^) 键
- 如何将常量字符*转换为常量无符号字符*
- Qt Creator项目打破:"找不到建筑x86_64符号"
- QT QT QBYTEARRAY无符号数据类型
- 是否有理由对非负常量使用无符号类型?
- 在 Cpp 标头中声明的常量变量应具有多少个符号条目
- 使用层类时的 QT 未解析外部符号
- 尝试将常量字符 [] static_cast<>为无符号字符 * 时出错
- 避免Qt中的非符号常量
- 如何使用"const"符号常量表示转换因子?
- 使用符号常量声明数组时出现问题
- 在头文件中声明符号常量而不初始化