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

magic-numbers - 如何处理“简单”的魔法值?

我认为这是相当独立于语言的,但如果我错了,那就选择 C#(或 C 或 C++)。

对于“简单”的魔法值,我的意思是这样的:

或者

或者

在写这个(上面的伪代码)时,我有点震惊,它真的只适用于与 0 比较的东西。

无论如何,处理这些魔法值的最佳方法是什么(考虑可读性、要创建的击键/代码数量和名称)?

拥有一个专门用于此的整个(静态)类(或 C# 中的枚举)感觉像是极端的矫枉过正。

0 投票
1 回答
8546 浏览

.net - -532459699有什么意义?

这是一个在许多 .NET 异常(尤其是 COM 异常,我认为)中作为退出代码返回的数字。

在这个问题中,有人使用 Reflector 发现该值在几乎每个 Exception 构造函数中都被初始化为私有变量。

我的问题是,为什么?这个数字有什么意义?很难相信它是随意选择的。我什至看不到任何数字意义(例如,在其二进制或十六进制表示中)。

0 投票
3 回答
788 浏览

python - 用于用户友好的任意字节字符串的配置文件格式是什么?

因此,我制作了一个简短的 Python 脚本,通过首先检查它们的幻数/文件签名来在 Windows 中启动具有不明确扩展名的文件:

我想将它编译为 .exe 以使关联更容易(使用 bbfreeze 或用 C 重写),但我需要某种用户友好的配置文件来指定匹配的字节字符串和程序路径。基本上我想以某种方式将此信息放入纯文本文件中:

(十六进制字节只是任意字节,而不是 Unicode 字符。)

我猜这种格式的 .py 文件可以工作,但我必须让它未编译,并以某种方式仍将其导入到已编译的文件中,并且仍然有一堆无关的内容,比如{,混淆/搞砸。

我查看了 YAML,它会很棒,只是它首先需要 base64 编码的二进制文件,而这并不是我真正想要的。我希望配置文件包含字节的十六进制表示。还有 ASCII 表示,如果这就是文件签名的全部内容的话。也许还有正则表达式。:D(例如,如果基于 XML 的格式可以用不同数量的空格编写)

有任何想法吗?

0 投票
4 回答
2601 浏览

c# - 如何通过幻数检测查看 WMA 和 WMV 文件之间的区别?

我正在尝试根据幻数来嗅探文件的类型。经过一番谷歌搜索后,我发现了以下信息:

世界气象组织:

主要关联:Windows Media
公司:Microsoft Corporation
文件分类:音频
Mime 类型:音频/x-ms-wma、视频/x-ms-asf
识别字符十六进制:30 26 B2 75 8E 66 CF 11 A6 D9 00 AA 00 62 CE 6C

WMV:

主要关联:Windows Media 文件
公司:Microsoft Corporation
Mime 类型:video/x-ms-wmv
识别字符 Hex:30 26 B2 75 8E 66 CF 11 A6 D9 00 AA 00 62 CE 6C

音频和视频都使用这些幻数。我如何检测我是否拥有其中一个。注意:我不能使用扩展名,我只有一个System.IO.Streamwith 字节。

0 投票
3 回答
261 浏览

magic-numbers - 什么时候数字不是魔术?

我有这样的功能:

如果我这样使用它:

那些 1/2s 是神奇的数字吗?

0 投票
3 回答
96 浏览

java - 有人告诉我,直接使用数字而不是静态最终 int 字段可以节省内存,这是真的吗?

在我的 Android 项目中,有许多常量来表示捆绑额外键、处理程序的消息参数、对话框 id ant 等。我团队中的某个人使用一些正常的数字来执行此操作,例如:

在处理程序中:

他说太多的静态最终常量会消耗大量内存。但我认为他的解决方案使代码难以阅读和重构。

我已经阅读了这个问题并用谷歌搜索了很多,但没有找到答案。 java: 使用 final static int = 1 是否比普通的 1 更好?

我希望有人可以告诉我静态决赛的内存成本。

对不起我的英语不好。

0 投票
2 回答
1013 浏览

java - 将幻数插入类文件

我有一个 jar,其中所有类文件都删除了它们的幻数和类型,我对这个特定领域不是很了解。将 0XCAFEBABE 和类型重新添加回每个类文件并重新打包 jar 的最佳方法是什么?

编辑:我检查过,只有幻数丢失,如果我手动添加文件是完整的。

0 投票
2 回答
3892 浏览

erlang - 我应该如何在 Erlang 中定义一些常量

我有一个模块可以进行一些非约束最小化。我想让它的界面尽可能简单,所以最好的选择是将它简化为一个函数,比如:min_of(F)。

但是一旦它是残酷的计算,我将不得不处理至少两个常数:最小化算法的精度和最大迭代次数,因此如果目标函数根本没有局部最小值,它就不会自行挂起。

无论如何,下一个最佳选择是:min_of(F, Iterations, Eps)。没关系,但我不喜欢它。我还想再定义一个 min_of( F ) 是这样的:

但没有神奇的数字。

我是 Erlang 的新手,所以我不知道如何正确处理这个问题。我应该定义一个宏、一个变量还是一个返回常量的函数?还是别的什么?我发现 Erlang 的表达能力很强,所以这个问题似乎是一个很好的实践,而不是技术问题。

0 投票
1 回答
305 浏览

java - Applet 的 .jar 搞砸了?

我正在尝试将小程序放入 Google 网站(因为域托管需要花钱)。我有那个工作,它在网站上。现在,我对此完全陌生,我的问题是为什么我的小程序不起作用?

我尝试的第一件事是将所有文件上传到谷歌驱动器并在那里访问它们(我的小程序访问多个文本文件 [只读,不写])但这给了我一个幻数错误,因为 FTP 是 ASCII 这使得类文件都是愚蠢的,或者我已经研究过了。

好的,所以我有一个托管文件的网站,它选择了 FTP(它自动为我的类文件做二进制,为我的文本文件做 ASCII)这使它更好,但显然未签名的小程序无法访问类文件以外的文件(我认为)。

所以,我为我的小程序制作了一个 .jar 使用jar cvf [jar name].jar [blah blah blah, class files I need and text files I need]

我把它上传到我的文件托管网站,唉 - 幻数错误!2东西东西很多数字。此时,我的 HTML 代码如下所示:

偏执地认为该站点的 FTP 客户端弄乱了我的 jar,我使用 FileZilla 上传到我的服务器(我选择了二进制传输类型),这仍然导致了一个幻数错误,特别是 1347093252,这是我的 zip 文件的开头相信(如果有帮助,当我单击此文件的链接时,它实际上会下载)。

我可能做了一些愚蠢的事情,但我想重申我在这方面是全新的。

如果有人可以提供帮助,那就太棒了;

我已经尝试过的事情:清除我的 java 缓存并加载小程序(从这里开始,假设列出的所有内容都以“并加载小程序”结尾),再次清除它,关闭我的浏览器,清除我的 java 缓存,清除我的缓存 -关闭我的浏览器 - 清除我的缓存、重新加载、更改计算机、更改 Internet 连接、更改计算机和 Internet 连接。

0 投票
2 回答
4564 浏览

c# - 避免魔术字符串和数字

我正在开发一个在过去几年中由各种程序员编辑的应用程序,我偶然发现了使用字符串文字访问 MenuItems 的问题。

例如:在很多地方都有类似的代码

或者

  1. 如何更改用于识别 MenuItem 的字符串并捕获它用于访问的所有位置?菜单和菜单项被声明为公共的,并在整个大型应用程序中使用

  2. 什么是正确的方法阻止使用这些魔术索引。我预见到每次添加新项目或更改名称时都会出现问题。

PS 我已经开始使用枚举字典方法,其中每个 menuItem 都与一个键配对。但这仍然不会强迫其他开发人员使用我的实现,也不是问题 2 的最优雅的解决方案