问题标签 [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 投票
15 回答
330793 浏览

language-agnostic - 什么是幻数,为什么它不好?

什么是幻数?

为什么要避免?

有合适的情况吗?

0 投票
7 回答
2234 浏览

database-design - 数据库设计查找表

我目前正在尝试改进遗留数据库的设计,我有以下情况

目前我有一个表 SalesLead,我们在其中存储 LeadSource。

潜在客户来源有用地存储在表格中。

所以我只想创建一个从一个到另一个的外键并删除非规范化列。

我希望所有标准的东西。

这是我的问题。我似乎无法摆脱这个问题,而不是写作

这是完全明确的,我现在必须写

或者

如果我们改变 LeadSource 字段的内容,就会中断。

在我的应用程序中,当我想更改 SalesLead 的 LeadSource 的值时,我不想从 1 更新到 2(例如),因为我不想让开发人员记住这些神奇的数字。id 是任意的,应该保持不变。

如何在我的应用程序代码中删除或否定对它们的依赖?

编辑我的解决方案必须支持的语言

  • .NET 2.0 + 3(对于它的价值 asp.net、vb.net 和 c#)
  • vba(访问)
  • 数据库 (MSSQL 2000)

编辑 2.0加入很好,只是 'foo' 可能会根据请求更改为 'foobar',我不想处理查询。

0 投票
2 回答
1777 浏览

windows - Windows Perl 下的 EWOULDBLOCK 等效 errno

G'day Stackoverflowers,

我是 Perl 的autodie pragma 的作者,它改变了 Perl 的内置函数以在失败时抛出异常。它类似于Fatal,但具有词法范围、可扩展的异常模型、更智能的返回检查以及更好的错误消息。它将Fatal在 Perl 的未来版本(临时 5.10.1+)中替换该模块,但目前可以从 Perl 5.8.0 及更高版本的 CPAN 下载。

下一个版本autodieflock使用LOCK_NB(非阻塞)选项添加对调用的特殊处理。虽然失败的flock调用通常会导致 under 的异常,但如果返回的 errno( ) 为,则对usingautodie的失败调用只会返回 false 。flockLOCK_NB$!EWOULDBLOCK

这样做的原因是人们可以继续编写如下代码:

EWOULDBLOCK在上面的代码中,由于其他人已经锁定了文件flock(在我们正在使用不支持文件锁的文件系统或网络文件系统并且网络刚刚死机的情况下,当自动染色flock发现我们的 errno 不是时,它会生成一个适当的异常EWOULDBLOCK

这在我的 Unix 风格系统上的开发版本中运行良好,但在 Windows 下却严重失败。看起来虽然 Windows 下的 Perl 支持该LOCK_NB选项,但它没有定义EWOULDBLOCK. 相反,当发生阻塞时,返回的 errno 是 33(“域错误”)。

显然我可以将它作为一个常量硬编码到autodie中,但这不是我想要在这里做的,因为这意味着如果 errno 改变(或已经改变),我会搞砸的。我很想将它与 Windows 等效的POSIX::EWOULDBLOCK. 如果你能帮忙,请告诉我。

我特别不想要的答案:

  • 建议将其硬编码为常数(或者更糟糕的是,留下一个浮动的幻数)。
  • 在 Windows 下根本不支持LOCK_NB功能。
  • 假设LOCK_NB调用的任何失败flock都应仅返回 false。
  • 我在 p5p 或perlmonks上提出的建议。我已经知道他们了。
  • 解释如何flock,或异常,或Fatal工作。我已经知道了。亲密无间。
0 投票
9 回答
1333 浏览

standards - 特殊 IP 地址

特别是,我正在寻找一个可以放入hosts文件中的 IP 地址,它将黑洞给定的 DNS 名称。现在我正在使用127.0.0.1,但如果我安装了任何服务,那会开始表现得很奇怪。

如何防止 3rd 方程序联系给定的服务器?

0 投票
8 回答
14977 浏览

perl - 如何使用 Perl 获取文件的大小(以兆字节为单位)?

我想以兆字节为单位获取磁盘上文件的大小。使用-s运算符给了我以字节为单位的大小,但我假设将它除以一个幻数是一个坏主意:

我应该只使用只读变量来定义 1024 还是有一种编程方式来获取以千字节为单位的字节数?

编辑:更新了不正确的计算。

0 投票
2 回答
636 浏览

xml - 如何处理 XML 节点名称(硬编码值)?

我最近一直在使用 xml。并且注意到了一些现象(对世界其他地方来说可能没什么大不了的,但对我来说确实如此)。也许,我是个新手。但是不应该将大多数硬编码或幻数分解为配置文件吗?例如,

这是xml文档:

如果没有硬编码“代码”或“消息”,你将如何解析它?

0 投票
6 回答
1768 浏览

magic-numbers - 为什么人们在他们的代码中使用魔法值而不是 null?

我在遗留代码和一些 .NET 开源项目中看到了这一点。我想不出这样做的理由。仅使用“null”对我来说似乎要容易得多。

例子:

相对

0 投票
1 回答
1669 浏览

javascript - 如何在 Javascript 中匹配 event.keyCode 时避免幻数

在 Javascript 中匹配按键时可以避免幻数吗?

一个例子是使用13 来匹配回车键

我可以指定自己的常量,但我不知道这些值在不同平台/浏览器/语言环境中是否足够稳定。

0 投票
1 回答
1165 浏览

blackberry - BlackBerry - GZip 解压缩问题

我在使用RIM 压缩 API时遇到了一个奇怪的问题,我无法让它像文档中描述的那样工作。如果我使用win gzip工具
gzip纯文本文件,将gz添加到黑莓项目的资源中并在应用程序中尝试解压它,会出现无限循环,gzis.read()永远不会返回-1 ...

压缩后的内容在 gzis.read() 中有重复的 65535 值。我发现的唯一解决方法是愚蠢的

但我很好奇是什么原因,我做错了什么,为什么65535

0 投票
7 回答
38158 浏览

magic-numbers - 23,148,855,308,184,500 是一个神奇的数字,还是纯粹的机会?

诸如此类的新闻报道表明,上述数字可能是作为编程错误出现的。

美国一名男子突然到他当地的加油站买一包香烟 - 却发现他的卡被收取了 23,148,855,308,184,500 美元。

那是 23 万亿美元(14 万亿英镑)——是美国国债的许多倍。*

在十六进制中,它是 $523DC2E199EBB4,乍一看似乎并不十分有趣。

任何人对什么编程错误会导致这种情况有任何想法?