在Qt中避免非符号常量

inf*_*xed 0 c++ qt

我参与的代码审查经常出现的一件事是代码中的"魔术数字"内联是一件坏事.

首选项是在某处分配符号.

现在我正在使用的是QT sdk.类成员QButtonGroup.checkedId()将返回-1一个幻数,表示所选组中没有单选按钮.

如果我写的东西像

if ( buttongroup->checkedId() == -1 )
{
   //yadda yadda
}
Run Code Online (Sandbox Code Playgroud)

它将出现在代码审查中.

虽然我当然可以定义一个const static int符号来给我这个-1,但Qt如果它有一个相关的常量定义,我宁愿在命名空间中使用一些东西.

是否已经定义了这样的符号?

ixS*_*Sci 5

代码审查是关于您的代码而不是第三方库的代码,因此您不能也不应该处理它.Qt没有任何要比较的命名实体,所以你必须比较生成的代码-1.然而,它有一个光明的一面:-1是一个广泛理解的幻数,所以不应该有任何误解 - 它被用于许多不同的语言和库.不管怎么样,它就在这里,我们必须忍受它.