为什么软件世界充满了状态代码?

Dav*_*Kay 10 legacy history

为什么程序员开始使用状态代码?我的意思是,我想我可以想象,在文本字符串是一种昂贵的资源时,这可能会有用.WAYYY那时候.但即使我们有兆字节的内存可以使用,我们仍继续使用它们.模糊状态代码背后的错误消息或状态消息的含义有什么可能的优势?

Dea*_*ing 26

提供状态代码的不同翻译很容易.必须查找字符串才能找到另一种语言的翻译,这有点傻.

此外,状态代码通常用于代码和输入:

var result = OpenFile(...);
if (result == "File not fond") {
    ...
}
Run Code Online (Sandbox Code Playgroud)

编译器无法将其检测为错误,其中,

var result = OpenFile(...);
if (result == FILE_NOT_FOND) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

将会.

  • 将"发现"拼写为"喜欢"是故意的,不需要修复.这是为什么使用定义的常量比使用字符串更可靠的解释的一部分. (13认同)
  • 哈哈,tuche :)但是那么`#define FILE_NOT_FOUND"文件怎么没找到"``与`#define FILE_NOT_FOUND 2`有什么不同? (4认同)

tom*_*gic 11

它允许本地化和更改错误消息的文本.


spe*_*der 8

这和以往一样.即使在今天的巨型/千兆字节世界中,数字也很便宜,字符串也很昂贵.

  • 我不同意,也不认为这是完全正确的.其他一些答案更准确,它与抽象,机器可读性和静态类型的优势有关 (4认同)

Ben*_*n S 8

我不认为状态代码构成混淆; 它只是一个国家的抽象.

整数状态代码的大量使用在有限状态机中.使状态为整数允许有效的switch语句跳转到正确的代码.

整数还允许更有效地使用带宽,这在移动应用中仍然是一个非常重要的问题.

字符串上的整数代码的另一个例子是用于比较.如果您将类似的状态组合在一起(例如状态10000-10999),则执行范围比较以了解状态类型是一个重大胜利.你可以成像进行字符串比较,只是为了知道错误代码是致命的还是只是一个警告,eww.


Ric*_*ard 7

数字可以很容易地进行比较,包括另一个程序(例如是否有失败).人类可读的字符串不能.

考虑一些字符串比较中可能包含的内容,有时可能不会:

  • 编码选项
  • 支持的字符范围(比较ASCII和Unicode)
  • 区分大小写
  • 重音灵敏度
  • 重音编码(分解或组合的unicode形式).

这是在允许大多数不会说英语的人之前.