Logo
Section 1 / 3

局部变量

了解 const 本地变量。

导入

局部变量

了解 const 本地变量。

const 局部变量简介

我们可以将所有不会改变值的局部变量声明为 const。这样做有助于代码未来的阅读者(包括我们自己)以及编译器进行一些优化。

局部变量与全局变量

1auto mutableNumber{42}; 2mutableNumber = 666; // 正常,允许修改 3const auto immutableNumber{42}; 4immutableNumber = 666; // 错误:无法给只读变量赋值

如前所述,如果我们将一个局部变量声明为 const,就表示该变量是不可变的,其值永远无法更改。如果我们试图后续修改它,将会出现编译错误:你不能给只读变量赋值。

默认将对象设为不可变,并仅对那些在构造后不会发生变化的对象使用 const,是一种推荐的做法。

将全局变量设为不可变非常有用,因为否则任何人都可以修改它们的值。然而,许多开发者选择避免使用全局常量,因为它们可能引入不必要的组件间耦合。

使用 const 的编译器优化

将变量声明为 const 还能让编译器执行一些优化。除非我们显式地将变量声明为 const,否则编译器无法确定该变量是否会发生变化。虽然这可能不会带来直接的好处,但也不会增加额外的指令开销。另一方面,正如我们刚才提到的,它可能帮助编译器大幅优化生成的指令。

因此,只要我们知道某个变量的值不会改变,就应该将其声明为 const,无论是局部变量还是全局变量。

实际上,我们往往会忘记将变量声明为 const,即使我们清楚它对代码可维护性和可读性的积极影响,也理解 const 对代码复杂度没有负面影响。即便如此,有时仍会遗漏某些变量的 const 声明。

许多现代编程语言已经解决了这个问题,将大多数变量默认设为不可变。例如,在 Rust 编程语言中,所有变量默认都是不可变的,除非我们显式声明为可变。

我们有充分理由遵循类似的实践。

如果我们的局部变量不需要改变值,就应将其声明为 const。至于全局变量,尽量避免使用!如果确实需要使用,应尽可能只使用 const 变量。

为 const 辩护:常见反对意见

关键要点