【发布时间】:2011-09-18 04:16:48
【问题描述】:
使用常量(不可更改)比不更改变量有什么好处吗?
【问题讨论】:
使用常量(不可更改)比不更改变量有什么好处吗?
【问题讨论】:
根据您的语言和编译器,常量在构建时可能会被内联和优化。变量可能会占用堆栈空间,即使它永远不会改变。
【讨论】:
通过使值保持不变,编译器可以直接替换它。例如,如果您有 x / 2,编译器可以计算并使用该值,而不必发出代码来检索 x 的值,然后将其除以 2。
此外,您不必担心意外更改值。例如,在类 C 语言中,您可能会意外键入 if (x = 2),而您的意思是 if (x == 2),如果它是一个变量,这将更改 x 的值。
【讨论】:
将来维护您的代码的任何人(包括您)在发现错误或添加功能时都不必四处查看常量在哪里(如果有的话)更改 - 他们会立即知道它不能改变。
【讨论】:
在某些程序语言中,将某些内容声明为常量将允许编译器进行原本不可能的优化。此外,将某些内容声明为常量可能是一种有用的方法,可以记录代码中的某些地方在值更改时可能会被破坏。
不幸的是,一些编程语言有时会用声明为常量的东西做坏事。例如,在某些 .net 语言中,如果声明为只读的值类型通过可修改引用传递,编译器将不会拒绝允许这样的操作,而是复制并传递它。这种隐式复制会降低效率,并可能导致意外语义。
【讨论】: