考虑以下代码:
const double Motor_Kv = 1.1e5; // Motor constant, [rpm/V]
const double Motor_R = 2e-2; // Winding resistance, [Ohm]
const double Motor_J = 3e-6; // Rotor angular mass, [kg*m2]
这已被重构为使用结构:
const MotorParams Motor = {
.Kv = 1.1e5, // Motor constant, [rpm/V]
.R = 2e-2, // Winding resistance, [Ohm]
.J = 3e-6, // Rotor angular mass, [kg*m2]
};
但是,现在 clang-tidy
对使用“魔数(Magic Number)”感到不满:
warning: 1.1e5 is a magic number; consider replacing it with a named constant [readability-magic-numbers]
我知道我可以使用 //NOLINT
注释来消除不需要的警告,但我想了解警告背后的原因。是否存在第二个样本的代码可能导致错误而第一个样本是安全的情况?
最佳答案
静态分析器无法理解注释中的内容,因此他们可能不赞成使用“魔数(Magic Number)”。您可以通过执行以下操作来防止这种情况:
#define MOTOR_RPM_V 1.1e5 // Motor constant, [rpm/V]
#define MOTOR_WINDRES_OHM 2e-2 // Winding resistance, [Ohm]
#define MOTOR_ANGMASS_KG 3e-6 // Rotor angular mass, [kg*m2]
const MotorParams Motor = {
.Kv = MOTOR_RPM_V,
.R = MOTOR_WINDRES_OHM,
.J = MOTOR_ANGMASS_KG,
};
关于c - 将魔数(Magic Number)分配给命名结构成员有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74728061/