问题标签 [magic-numbers]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
338 浏览

c++ - 避免 eof C++ 的“幻数”

我有一些代码在逐行遍历文本文件以标记数据并将其插入向量时循环。

我正在使用 peek() 来测试文件是否在末尾,如果是则中断循环:

这很好用,但我对包含“幻数”-1 有点恼火。是否有一个 C++ 库,我可以包含与 stdio.h 相同的函数,将 -1 预定义为 EOF ,或者我应该只定义一个 const int eof = -1?

0 投票
3 回答
1061 浏览

c# - 使用变量与幻数的性能影响

我经常对此感到困惑。我一直被教导用变量或常量来命名我经常使用的数字,但如果它降低了程序的效率,我还应该这样做吗?这是一个例子:

上面的代码使用了命名变量,但运行速度比这段代码慢:

在这个例子中,执行时间的差异很小,但是在更大的代码块中呢?

0 投票
4 回答
2533 浏览

java - 0.0 和 1.0 是否被视为幻数?

我知道 , -1, 0,12是幻数规则的例外。但是我想知道当它们是浮动时是否也是如此。我是否必须为它们初始化最终变量,或者我可以直接在我的程序中使用它们。

我在课堂上使用它作为百分比。如果输入小于 0.0 或大于 1.0,那么我希望它自动将百分比设置为零。所以如果(0.0 <= 输入 && 输入 <= 1.0)。

谢谢

0 投票
3 回答
323 浏览

c++ - 参数或方法重载的幻数?

我需要在 C++ 中为一个类实现一个接口,在该接口中我需要询问与两种集合相关的事件,比如这里的人和动作。我需要在所有可能的组合中询问人员标识符和操作标识符(全部,仅指定一个标识符或同时指定它们)
选项 1)

此选项一目了然,但我需要为每种可能的组合实现不同的接口,因此如果我包含一个新标识符 (2³),将有 8 种方法。

选项 2)

对于这个选项,只有一个方法接口,但我引入了一个公共幻数来搜索“所有可能的 id”

关于可用性和进一步的可维护性,现在我想到这将是这两者之间的最佳选择(当然,还有其他更好的选择,我不包括在内)。

谢谢。

0 投票
1 回答
427 浏览

java - 从大小中删除幻数

我正在做一个 GUI。我得到了 setSize 值的神奇数字。由于幻数是不好的做法,我怎样才能摆脱大小的幻数?我应该为每个人分配一个变量吗?

这样它就会像setSize(x,y)。克服这个问题的最佳方法是什么?我应该这样做还是有其他更好的方法?如果有很多尺寸怎么办,这将是无用的,因为我无法为每个尺寸分配。

0 投票
2 回答
343 浏览

java - 如何摆脱魔术数字背景

我得到了 jpanel 背景的神奇数字。有没有办法摆脱这种情况,因为这是不好的做法:

我怎样才能有自定义颜色呢?

0 投票
3 回答
846 浏览

c++ - 非 NULL 保留指针值

如何创建保留的指针值?

上下文是这样的:我一直在考虑如何为动态脚本语言实现数据结构(我不打算实现这个 - 只是想知道它会如何完成)。

字符串可以包含任意字节,包括 NUL。因此,有必要单独存储该值。这需要一个指针(指向数组)和一个数字。第一个技巧是,如果指针为 NULL,则它不可能是有效字符串,因此该数字可用于实际整数。

如果可以创建第二个保留指针值,这可以用来暗示另一个字段现在被用作浮点值。这可以做到吗?

一种想法是 mmap() 一个没有权限的地址,也可以这样做来替换 NULL 指针的使用。

0 投票
1 回答
197 浏览

java - 为什么在java中的正则表达式实现中使用幻数?

Matcher类的构造函数源码:

为什么我们不只使用 parent.capturingGroupCount*2 作为组的长度?

0 投票
1 回答
255 浏览

java - 在 Java printf 格式说明符中丢失幻数以生成列

在 C 中,该printf函数有一个很好的通配符功能,您可以在其中使用星号,通常放置一个指定最小列宽的 int。所以你可以去

在预处理器指令中,然后你可以把

在 20 个字符的列中打印 myString。

这个星号技巧似乎没有在 Java 中实现。我得走了

反而。这是一个公然的幻数,尤其是当您尝试使用 printf 执行诸如构建表格之类的操作时,您想要一种简单的方法来一次更改多行的列宽。所以,

  • Java中的printf是否有一些我想念的东西使我想做的事情成为可能,或者

  • 是否有一种简洁且更像 Java 的方式来格式化文本以在表格中输出而不使用幻数?

0 投票
1 回答
486 浏览

c++ - 反射格雷码到二进制转换中的幻数

我编写了一个通用函数来将二进制反射格雷码转换为标准二进制。我使用了在此页面上找到的算法。这是前面提到的算法:

然后我修改了代码,使其适用于任何标准unsigned类型。这是我写的:

该算法似乎适用于每种unsigned标准类型。但是,在编写它时,我本能地使用了它,sizeof(Uint)*4因为结束条件取决于字体大小是有道理的,但事实是我不知道sizeof(Uint)*4实际代表什么。就目前而言,这是我本能地写下的一个神奇数字,但我无法解释为什么它适用*4于任何其他系数而不适用于任何其他系数。

有人知道这个幻数实际上对应的是什么吗?