我想知道其他人是否认为做这样的事情是多余的......
const double RESET_TIME = 0.0;
timeSinceWhatever = RESET_TIME;
而不仅仅是
timeSinceWhatever = 0.0;
您是否找到了第一个帮助提高可读性的示例?该论点归结为使用幻数,而0和1被认为是规则的“例外”,我总是认为这些异常仅适用于初始化变量或索引访问。当数字有意义时,它应该附加一个变量的含义。
我想知道这个假设是否有效,或者只是为了赋予0一个命名常数是多余的。
答案 0 :(得分:7)
嗯,在你的特定例子中,使用常量没有多大意义。
但是,例如,如果RESET_TIME在将来发生变化的可能性很小(并且变成,比方说,1)那么你肯定应该使用常量。
如果你的意图不明显,你也应该使用常数。但在您的特定示例中,我认为timeSinceWhatever = 0;
比timeSinceWhatever = RESET_TIME
更清晰。
答案 1 :(得分:3)
通常,定义常量而不是仅使用文字的一个好处是,值是否需要同时在多个位置进行更改。
从你自己的例子来看,如果由于一些模糊的新业务规则,REST_TIME需要为-1.5怎么办?您可以将其更改为一个位置,常量的定义,或者您可以在上次使用0.0作为浮点字面值的任何位置更改它。
简而言之,定义常量一般主要有助于维护。
答案 2 :(得分:2)
如果你想更具体,让其他人知道你为什么要改变做你正在做的事情,你可能想要创建一个函数(如果你的语言允许函数浮动),例如
timeSinceWhenever = ResetStopWatch();
或者更好的是,当处理单位时,要么找到一个内置函数类型的库,要么创建自己的函数类型。我不建议随着时间的推移创建自己的,因为有大量的这样的库。我之前在代码中看到过它,如果它有帮助:
Temperature groundTemp = Temperature.AbsoluteZero();
这是指示正在发生的事情的好方法。
答案 3 :(得分:1)
我只有在RESET_TIME
可能与0.0不同的情况下才会定义它,这样您就可以进行一次更改并更新所有引用。否则0.0是我眼睛的最佳选择,因此您无需追溯并查看RESET_TIME
定义的内容。
答案 4 :(得分:1)
常量是优选的,因为它允许使用可在后续版本的代码中更改的值。并不总是可以使用常量,特别是如果您使用OO语言进行编程,并且无法定义不包含基本数据类型的常量。通常,编程语言总是有一种方法来定义不可修改的对象/数据类型。
答案 5 :(得分:0)
假设RESET_TIME经常在您的代码中使用,并且您想要更改该值,最好一次执行而不是在每个语句中执行。
答案 6 :(得分:0)
优于常量,使其成为配置变量,并将其设置为默认值。但是,是的,RESET_TIME更具可读性,前提是它不止一次使用,否则只需使用代码注释。
答案 7 :(得分:-1)
该代码没问题。 const变量是不可更改的变量。因此,无论何时你想重置一些东西,你都可以让你的const去做那件事