[英]Is it bad practice to have “generic” enums?
我有一個帶有“BlockType”枚舉的圖形程序。 根據州的不同,這可能是以下幾種方式之一:木材,石材,草坪等。
最初,每種可能性都需要進行各種紋理操作,但是由於一些重構,枚舉僅用作整數,並且不再需要switch語句。 即:
BlockType someFoo = someObj.blockType;
Texture usedTexture = textureLookupArray[(int) someFoo];
但作為一個副作用,Enum字符串完全是多余的! 即使BlockType 5被定義為“Carpet”,“Gravel”或“JQuery”,我也可以將“Stone”紋理放在第5位!
我的第一個想法是簡單地重寫BlockType來定義“Material1,Material2等”。 而不是硬編碼(和潛在的沖突!)值,但這實際上是否有用?
可能會有一些好處,我忽略了將BlockType保持為枚舉,或者我應該將其切換到常規的Int以減少混淆?
為什么在字典會更好,更好的時候使用數組呢?
private Dictionary<BlockType, Texture> _textures =
new Dictionary<BlockType, Texture>
{
{ BlockType.Wood, new WoodTexture() },
{ BlockType.Metal, new MetalTexture() },
//etc
}
使用起來更優雅
var tex = _textures[someObj.blockType];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.