我的具体问题是cppcoreguidelines-avoid-magic-numbers
正在标记对setter的调用。例如:
auto person = Person();
person.set_height(6); // <--- Flagged as "magic number"
这真的不是一个神奇的数字,因为这个数字所代表的上下文是由setter调用本身明确的(在这种情况下它是Person
的高度)。因此,我希望能够忽略cppcoreguidelines-avoid-magic-numbers
对set_height
的所有调用。
我想在一般情况下能够做的是忽略<list-of-warnings>
上的所有<some-function>
的调用,并且只忽略那些函数调用(例如全局禁用是不希望的)。
作为一种解决方法,我可以编写一个emacs保存钩子,在匹配这些设置的每行之后插入// NOLINT(cppcoreguidlines-avoid-magic-numbers)
。我真不愿意那样做。
是否有更简单的方法?是否有其他解决方法来处理这个问题?
person.set_height(6);
它表示什么,英寸,英尺,厘米,米?警告是正确的,即使在高度值上下文中,6也是一个幻数。
c++核心指南建议使用用户定义的字面量。
constexpr double operator"" _ft(double height) {
return height;
}
constexpr double operator"" _in(double height) {
return height / 12;
}
person.set_height(6_ft);
person.set_height(72_in);