枚举的重要性

Importance of Enums

我对枚举的重要性感到有点困惑。假设我们有以下代码...

enum playerState {walking, running, idle, jumping, dead};

playerState myPlayerState = idle;

if{energy == 0}
{
  myPlayerState = dead;
}

这比仅使用字符串并完全避免枚举并在必要时切换到新的适当字符串值更有效吗?

string playerState = "idle";

if{energy == 0}
{
  playerState = "dead";
}

2 个原因:

1) 在大多数语言中,枚举将使用整数或类似的整数实现,通常比可比较的字符串占用更少的内存。

2) 它是其他开发人员查看您的代码的指南,让他们知道变量可以呈现的可能状态的有限列表,并用自然语言告诉他们它们是什么。

不同之处在于枚举定义了变量可以保存的一组严格的值,如果你试图给它一些不好的东西,它会给你一个编译时错误。

对于字符串,它们可以取任何值,如果根据程序中的某些定义字符串是 "bad",它会在运行时失败;或根本没有,并导致不可预测的行为。

在编译时失败的事情比在运行时失败要好得多;若有可能。

@Jeff 也是对的。枚举几乎总是会占用更少的 space,所以如果你有很多浮动变量,使用枚举可能会有所不同。

  1. 在大多数语言中,Enum 类型是编译器已知并可在编译时检查的受限整数(可以采用一组有限值的整数)
  2. 由于枚举的有限值具有人类可读的名称,因此它使代码更具可读性
  3. 与字符串不同,枚举的存储和操作需要较少的计算量
  4. 大多数代码编辑器都会有某种 IntelliSense,允许编码人员 select 可能的值之一,从而使代码更易于编写