我正在监督的团队中的开发人员更喜欢在他的测试中将变量声明为常量,例如const int someValue = 1;
(而不仅仅是int someValue = 1;
).
当我看到这一点时,我发现它有点奇怪,并质疑他做了什么.他的论点是,这对于这个测试来说是明智的 - 因为他所分配的价值永远不会改变.
我一直认为常量是应该在类级别声明的东西.但是,我确实看到了开发人员的观点.
你怎么看?而且,除了测试之外,你会用常规方法声明常量吗?如果是,那为什么呢?
一般来说,我认为以这种方式明确表达您的意图总是一个好主意,原因有很多:
你写它时更容易理解你的意思.
其他人在阅读代码时更容易对代码进行推理.
编译器更容易推断出您想要做什么.
编译器更容易防止逻辑错误.
使变量保持不变是完成上述所有操作的完全合法的方法,在特定的情况下意图"我不希望这个变量改变它的值".
来自Scott Meyers的Effective C++(第3章):
const
尽可能使用.美妙的事情有关
const
的是,它允许你指定一个语义约束-特定对象应该不被修改-和编译器将强制执行约束.它允许您与编译器和其他程序员进行通信,使值保持不变.只要这是真的,你应该肯定这么说,因为这样你就可以帮助编译器帮助确保不违反约束条件.
如果标识符仅在声明的函数中使用,为什么要使用它来规范更广泛的范围.如果分配给标识符的值不应该更改,那么将其标记为编译器以及发现错误都是有用的.
如果你打算使用静态类型的语言,为什么不去整个九码呢?使用const
以表明您不希望值,以第一次转让后不断改变.如果你蠢的话,让编译器给你带来麻烦.
我非常喜欢const
C++方法参数中的关键字,正是出于这个原因......