我不是业余程序员,但这个问题肯定听起来有点业余,这可能是因为我通过实验,教程,论坛和堆栈溢出等知识来学习编程。
但是,我正在考虑使用一些(javascript)代码,我前几天在那里用一些简单的数字来实现,我在那里使用了一些代数方程式 - 其中一些被使用了两次,或者几次,所以我做了我在类似情况下所做的事情。也就是说,我将它们放入表示它们的变量中,然后在需要它们的多个实例中使用它们。虽然这可能是显而易见的,但是这个例子就是这样的:
var two = 2;
var seven = 7;
var eighteen = 18;
var calculate = (((seven * 140) / (seven + eighteen)) + ((eighteen * 50) + two) * two);
现在我知道这个计算毫无意义,但这并不意味着,它只是一个随机的计算,我用来说明我的观点。
但我的问题是这是正确的吗?我的逻辑是为什么当我可以在一个变量中声明它然后让它从内存中提供而不是重复给出时,一遍又一遍地设置相同的值。说实话,这个问题已经存在了很长一段时间,但我从来没有想过要冒这个问题看起来有些愚蠢,但我只是想知道我只是想知道一劳永逸的答案。例如,我记得很久以前和某人就这个话题进行了对话,我不记得是谁,也许是在学校某个html课堂上的老师,或者现在知道谁。但是我记得那个人告诉我,当谈到像这样的简单值时,最好在那里给出实际值然后事先声明它并从内存中调用它,因为显然,这个(或那些)变量的调用和读取(s)需要更多的处理,而不是在需要时重复设置。显然,一个复杂的值(比如我的“计算”变量)会更好地在之前声明并记住,但是使用简单的值,这是我不能100%肯定的地方。
正如我所说,这个问题在我的脑海里已经存在很长一段时间了,我只是想知道事情的真相。我一直在javascript,jQuery,C#和T-SQL上使用这个概念(不经常,只是在极少数情况下有必要)。
答案 0 :(得分:0)
不要执行您在示例中显示的内容。在代码(例如2,7和18)中不有“魔术数字”是好的,但是如果要用宏常量或变量替换它们,请将它们命名为表示其目的。这样,如果由于某种原因必须更改值,则没有值为3的“two”!值为2的“array_stride”可以更改为值3而不会产生混淆。
现在,关于将这些值放在一个常量宏文字中是否更好,或者是否从它们中创建变量,这很难给出明确的答案。这取决于编译器或其他任何东西是否可以识别相同常量值的重复使用,并将其优化为仅为其分配一个存储空间。如果可以,那么你做的并不重要,因为它会将值存储在一个地方并在需要的地方加载它(有足够的寄存器,你可能会将它保存在寄存器中,这会加载得更快)。如果不能,你最好做一个变量。所以,也许 会更好地拥有一个完整的变量。