3

我想知道其他人是否觉得做这样的事情是多余的......

const double RESET_TIME = 0.0;
timeSinceWhatever = RESET_TIME;

而不仅仅是做

timeSinceWhatever = 0.0;

您是否发现第一个示例有助于提高可读性?争论归结为使用幻数,虽然 0 和 1 被认为是规则的“例外”,但我一直认为这些例外仅适用于初始化变量或索引访问。当数字有意义时,它应该有一个变量附加到它的含义上。

我想知道这个假设是否有效,或者给 0 一个命名常量是否只是多余的。

4

8 回答 8

7

好吧,在您的特定示例中,使用常量没有多大意义。

但是,例如,如果 RESET_TIME 将来发生变化的可能性很小(比如说变成 1),那么您绝对应该使用常量。

如果您的意图从数字中不明显,您还应该使用常量。但是在您的特定示例中,我认为这timeSinceWhatever = 0;timeSinceWhatever = RESET_TIME.

于 2009-12-18T02:37:10.120 回答
3

通常,定义常量而不是仅仅使用文字的一个好处是,如果值需要同时在多个位置更改。

在您自己的示例中,如果 REST_TIME 由于某些晦涩的新业务规则而需要为 -1.5,该怎么办?您可以在一个地方更改它,即常量的定义,或者您可以在您上次使用 0.0 作为浮点文字的任何地方更改它。

简而言之,定义常量通常主要有助于可维护性。

于 2009-12-18T02:36:59.103 回答
2

如果您想更具体并让其他人知道您为什么要更改正在做的事情,您可能想要创建一个函数(如果您的语言允许函数浮动),例如

timeSinceWhenever = ResetStopWatch();

或者更好的是,在处理单元时,要么找到一个内置函数类型的库,要么创建你自己的库。我不建议随着时间的推移创建自己的库,因为有大量这样的库。如果它有帮助,我以前在代码中见过这个:

Temperature groundTemp = Temperature.AbsoluteZero();

这是指示正在发生的事情的好方法。

于 2009-12-18T02:58:23.333 回答
1

常量更可取,因为它允许使用一个值,然后可以在代码的后续版本中更改该值。并非总是可以使用常量,尤其是在使用 OO 语言进行编程时,并且无法定义不包含基本数据类型的常量。通常,编程语言总是有一种方法来定义不可修改的对象/数据类型。

于 2009-12-18T03:06:29.187 回答
1

我只会在有RESET_TIME可能与 0.0 不同的情况下定义它,这样您就可以进行一次更改并更新所有引用。否则 0.0 对我来说是更好的选择,这样您就不必回溯并查看RESET_TIME定义的内容。

于 2009-12-18T02:36:31.193 回答
0

比常量更好,使其成为配置变量,并将其设置为默认值。但是,是的,RESET_TIME 更具可读性,只要它多次使用,否则只需使用代码注释。

于 2009-12-18T03:01:47.743 回答
0

好吧,假设 RESET_TIME 经常在您的代码中使用并且您想要更改该值,最好只执行一次而不是在每个语句中执行。

于 2009-12-18T02:36:41.163 回答
-1

那个代码没问题。const 变量是不可更改的变量。所以每当你想重置某些东西时,你总是可以让你的 const 来做

于 2009-12-18T02:36:43.893 回答