问题标签 [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.
language-agnostic - 什么是幻数,为什么它不好?
什么是幻数?
为什么要避免?
有合适的情况吗?
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',我不想处理查询。
windows - Windows Perl 下的 EWOULDBLOCK 等效 errno
G'day Stackoverflowers,
我是 Perl 的autodie pragma 的作者,它改变了 Perl 的内置函数以在失败时抛出异常。它类似于Fatal,但具有词法范围、可扩展的异常模型、更智能的返回检查以及更好的错误消息。它将Fatal
在 Perl 的未来版本(临时 5.10.1+)中替换该模块,但目前可以从 Perl 5.8.0 及更高版本的 CPAN 下载。
下一个版本autodie
将flock
使用LOCK_NB
(非阻塞)选项添加对调用的特殊处理。虽然失败的flock
调用通常会导致 under 的异常,但如果返回的 errno( ) 为,则对usingautodie
的失败调用只会返回 false 。flock
LOCK_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
工作。我已经知道了。亲密无间。
standards - 特殊 IP 地址
特别是,我正在寻找一个可以放入hosts
文件中的 IP 地址,它将黑洞给定的 DNS 名称。现在我正在使用127.0.0.1
,但如果我安装了任何服务,那会开始表现得很奇怪。
如何防止 3rd 方程序联系给定的服务器?
perl - 如何使用 Perl 获取文件的大小(以兆字节为单位)?
我想以兆字节为单位获取磁盘上文件的大小。使用-s
运算符给了我以字节为单位的大小,但我假设将它除以一个幻数是一个坏主意:
我应该只使用只读变量来定义 1024 还是有一种编程方式来获取以千字节为单位的字节数?
编辑:更新了不正确的计算。
xml - 如何处理 XML 节点名称(硬编码值)?
我最近一直在使用 xml。并且注意到了一些现象(对世界其他地方来说可能没什么大不了的,但对我来说确实如此)。也许,我是个新手。但是不应该将大多数硬编码或幻数分解为配置文件吗?例如,
这是xml文档:
如果没有硬编码“代码”或“消息”,你将如何解析它?
magic-numbers - 为什么人们在他们的代码中使用魔法值而不是 null?
我在遗留代码和一些 .NET 开源项目中看到了这一点。我想不出这样做的理由。仅使用“null”对我来说似乎要容易得多。
例子:
相对
blackberry - BlackBerry - GZip 解压缩问题
我在使用RIM 压缩 API时遇到了一个奇怪的问题,我无法让它像文档中描述的那样工作。如果我使用win gzip工具
gzip纯文本文件,将gz添加到黑莓项目的资源中并在应用程序中尝试解压它,会出现无限循环,gzis.read()永远不会返回-1 ...
压缩后的内容在 gzis.read() 中有重复的 65535 值。我发现的唯一解决方法是愚蠢的
但我很好奇是什么原因,我做错了什么,为什么65535?
magic-numbers - 23,148,855,308,184,500 是一个神奇的数字,还是纯粹的机会?
诸如此类的新闻报道表明,上述数字可能是作为编程错误出现的。
美国一名男子突然到他当地的加油站买一包香烟 - 却发现他的卡被收取了 23,148,855,308,184,500 美元。
那是 23 万亿美元(14 万亿英镑)——是美国国债的许多倍。*
在十六进制中,它是 $523DC2E199EBB4,乍一看似乎并不十分有趣。
任何人对什么编程错误会导致这种情况有任何想法?