避免Qt中的非符号常量

Avoiding non symbolic constants in Qt

本文关键字:符号常量 Qt 避免      更新时间:2023-10-16

在我参与的代码评审中经常出现的一件事是,代码中的"幻数"是一件坏事。

首选方案是在某个位置指定一个符号。

现在我正在处理的是QT sdk。类成员QButtonGroup.checkedId()将返回-1作为幻数,表示所选组中没有单选按钮。

如果我写一些类似的东西

if ( buttongroup->checkedId() == -1 )
{
   //yadda yadda
}

它将出现在代码审查中。

虽然我当然可以定义一个const static int符号来给出-1,但如果Qt命名空间中定义了相关的常量,我更愿意使用它。

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

代码评审是关于您的代码,而不是第三方库的代码,因此您不能也不应该处理它。Qt没有任何命名实体可供比较,因此您必须将生成的代码与-1进行比较。不过,它也有光明的一面:-1是一个被广泛理解的幻数,所以不应该有任何误解——它被用于许多不同的语言和库中。不管它在这里有多糟糕,我们都必须接受它。

没有预定义这样的符号;你必须自己定义它。