标签: magic-numbers

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

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

my $size_in_mb = (-s $fh) / (1024 * 1024);
Run Code Online (Sandbox Code Playgroud)

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

编辑:更新了错误的计算.

perl file-io filesize magic-numbers

14
推荐指数
3
解决办法
1万
查看次数

为什么我们在.class文件的开头需要一个幻数?

我在这里阅读了一些关于0xCAFEBABE每个java .class文件开头的幻数的帖子,想知道为什么需要它 - 这个标记的目的是什么?
还需要它吗?或者它现在只是为了向后兼容?

找不到答案的帖子 - 我也没有在java 规范中看到答案

java magic-numbers

13
推荐指数
1
解决办法
6275
查看次数

杀死魔术数字:“ const int” vs“ constexpr int”(或最后没有区别)

假设我有一个magic number想要摆脱的...

//whatever.cpp

for (int i = 0; i < 42; i++)
{
    //...
}
Run Code Online (Sandbox Code Playgroud)

我可以通过两种方式杀死它:

在源文件中带有const int SOMETHING_SOMETHING_MEANING_OF_LIFE = 42
或带有。constexpr int SOMETHING_SOMETHING_MEANING_OF_LIFE = 42
.cpp

在这种情况下,两者之间是否有任何有意义的区别(我记得编译器推断出-在任何一种情况下-值均未更改,因此42实际上将其硬编码在结果循环/展开循环/任何机器代码中)或归结为个人品味吗?

在一个相关的问题中:如果magic number在标头(.h)文件而不是源(.ccp)文件中声明了(从而替换它的事物),那会发生什么变化(如果是,则如何改变)呢?

c++ const magic-numbers constexpr

13
推荐指数
2
解决办法
943
查看次数

-1是一个神奇的数字?反模式?代码味道?当局的报价和指南

可能重复:
持续滥用?

我已经看到-1在各种API中使用,最常见的是搜索具有从零开始的索引的"集合"时,通常用于指示"未找到"索引.这"有效",因为-1从来不是一个合法的索引.似乎任何负数都应该有效,但我认为-1几乎总是使用某种(不成文的?)约定.

我想至少暂时将范围限制为Java.我的问题是:

  • 关于使用-1像这样的"特殊"返回值,Sun的官方文字是什么?
  • 关于这个问题有哪些引用,例如James Gosling,Josh Bloch,甚至是Java以外的其他权威人士?
  • 过去有关这个问题的一些值得注意的讨论是什么?

java magic-numbers

12
推荐指数
1
解决办法
1839
查看次数

我应该如何定义Erlang中的常量

我有一个模块,它做了一些非约束最小化.我想保持其界面尽可能简单,因此最好的选择是将其缩小为单个函数,例如:min_of(F).

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

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

min_of( F ) ->
    min_of( F, 10000, 0.0001).
Run Code Online (Sandbox Code Playgroud)

但没有魔术数字.

我是Erlang的新手,所以我不知道如何妥善处理这个问题.我应该定义一个宏,一个变量,还是一个返回常量的函数?甚至还有其他什么?我发现Erlang很有表现力,所以这个问题似乎比技术问题更好.

erlang magic-numbers

11
推荐指数
2
解决办法
3500
查看次数

Windows Perl下的EWOULDBLOCK等效错误

G'day Stackoverflowers,

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

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

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

use Fcntl qw(:flock);

use autodie;   # All perl built-ins now succeed or die.

open(my $fh, '<', 'some_file.txt');

my $lock = flock($fh, LOCK_EX | LOCK_NB);  # Lock the file if we can.

if ($lock) {
    # Opportuntistically do something with the locked file.
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,由于其他人已将文件锁定为has(EWOULDBLOCK)而失败的锁定不被视为硬错误,因此自动重放 …

windows perl magic-numbers errno

10
推荐指数
2
解决办法
1703
查看次数

-532459699有什么意义?

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

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

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

.net exception magic-numbers

10
推荐指数
1
解决办法
7824
查看次数

为什么人们在代码中使用魔术值而不是null?

我在遗留代码和一些.NET开源项目中看到了这一点.我无法想象这样做的理由.只使用"null"对我来说似乎更容易.

例:

public class Category
{
   int parentID;

   bool HasParent
   {
      get
      {
          return parentID != -1;
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

public class Category
{
   int parentID;

   bool HasParent
   {
      get
      {
          return parentID != null;
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

magic-numbers

9
推荐指数
2
解决办法
1423
查看次数

如何获取二进制文件的幻数

每个二进制文件都有一个幻数,有人知道如何从文件中检索这些信息吗?

unix file-type magic-numbers

9
推荐指数
2
解决办法
2万
查看次数

Express.JS:如何按名称而不是数字设置响应状态?

好的,每个人都知道200没关系,找不到404.但是对于永久与临时重定向或需要付款或其他更奇特的HTTP错误代码之类的东西,最好做以下事情:

response.status('REQUEST_ENTITY_TOO_LARGE');
Run Code Online (Sandbox Code Playgroud)

而不是仅仅使用一般被认为是不好的魔术数字.当然,我可以在某个对象中有413:'REQUEST_ENTITY_TOO_LARGE',但是Express已经有了状态代码的副本 - >名称映射,我宁愿不重复它.

如何在Express JS中按名称指定响应状态?

编辑:感谢@Akshat指出http.STATUS_CODES.阐述他的答案,因为价值观本身是独一无二的,人们可以运行:

   var statusCodeByName = {};
   for ( var number in http.STATUS_CODES ) {
     statusCodeByName[http.STATUS_CODES[number]] = number
   }
Run Code Online (Sandbox Code Playgroud)

这允许一个人:

  > statusCodeByName['Request Entity Too Large']
  '413'
Run Code Online (Sandbox Code Playgroud)

http magic-numbers http-status-codes node.js express

9
推荐指数
1
解决办法
1万
查看次数