У меня есть графическая программа с перечислением «BlockType». В зависимости от состояния это может быть одна из нескольких вещей: Дерево, Камень, Трава и т. д.
Первоначально существовали различные операции с текстурами, которые нужно было выполнять для каждой возможности, но благодаря некоторому рефакторингу перечисление используется только как целое число и больше не требуется для операторов switch. То есть:
BlockType someFoo = someObj.blockType;
Texture usedTexture = textureLookupArray[(int) someFoo];
Но в качестве побочного эффекта строки Enum полностью избыточны! Я мог бы поместить текстуру «Камень» в позицию 5, даже если BlockType 5 определен как «Ковер», «Гравий» или «JQuery»!
Моей первой мыслью было просто переписать BlockType, чтобы определить «Материал1, Материал2 и т. д.». вместо жестко закодированных (и потенциально конфликтующих!) значений, но действительно ли это служит полезной цели?
Может быть, есть какое-то преимущество, которое я упускаю из виду, чтобы сохранить BlockType как перечисление, или я должен просто переключить его на обычный Int, чтобы избежать путаницы?