簡體   English   中英

擁有“通用”枚舉是不好的做法嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM