2008-10-07 18 views
3

您如何看待枚舉值的正確命名,它是一個好主意,有這樣一個枚舉:爲C#

enum AvailableSpace { 
    Percent10, 
    Percent20, 
    SqF500, 
    SqF600 
} 

的問題是關於價值觀名的語義,即兩個百分比平方英尺。我真的相信這不是一個好主意,但我無法找到和指導等方面的支持。

編輯:這將被用於確定一個實體的狀態 - 即作爲只讀屬性來描述對象的狀態。如果我們知道的總空間(即對象本身知道它),我們必須在內部轉換的選項,所以我們要麼只有百分比,或平方英尺,或兩者兼而有之。爭論是,「兩者」不是一個好主意。

以上是當然的例子,但真正的問題是,一些數據提供給我們彙總(sq.f.),以及其他百分比,我的目標是統一的用戶界面。我可以自由地做出一些近似值,所以根據我們想要呈現信息的準確度來調整確切的值。

的問題是,只有約值名字的語義,而不是內容 - 即,如果它是把百分比的(潛在的)INT枚舉一個好主意。

+0

不知道它是如何被使用的,我真的不能評論它是否是一個好主意。 – crashmstr 2008-10-07 20:36:01

+0

我編輯了這個問題,抱歉沒有提供上下文。 – 2008-10-07 20:44:04

回答

8

答案:不,這是不使用枚舉的代表值是個好主意。特別是在兩個語義上不同的尺度上的值。你不應該使用枚舉值。

原因:來自兩個量表的枚舉值(如Percent10和SqF600)之間的關係是什麼?你如何擴展代碼中可以表示的值的列表?你如何對這些值進行比較和算術運算?

建議(不要求,但是這裏是:-)):你試圖做什麼的語義會更好地反映一個包含兩個字段的結構 - 一個用於絕對區域和一個用於該絕對區域的可用百分比。有了這樣的結構,你可以代表任何你可以用上面的枚舉來表示的東西。例如,數據提供者,讓你絕對的區域,來表示與該地區,並提供100%的一個結構。數據提供商給你的百分比,來表示與他們設定的百分比和絕對面積,使得面積的百分比是數據提供商希望以報告的實際可用面積的結構。您可以從這兩種類型的提供程序中獲得「標準化」數據表示,並且可以添加幾個運算符以啓用實例的比較和算術計算。

5

如果可能的話,我寧願打破你的例子爲兩個值,你的枚舉是「百分比」和「SquareFeet」,第二個值是量詞。將這些綁定在一個結構中。

如果上下文允許,創建兩個包裝類型「Percent」和「SquareFeet」然後創建一些運算符重載可能會更好,因此您可以執行「new SquareFeet(500)+ new Percent (20);」並消除使用枚舉。

更新:如果這些值是行業公認的術語,幾乎就是符號,您的命名方案將是適當的。例如,它的安全,有一個包含值,如「ISO9001」,而不是兩個值(含「ISO」枚舉和9001一個int)枚舉。這也將會是合適的有一個枚舉象下面這樣:

public enum OperatingSystem 
{ 
    Windows95, 
    Windows98, 
    Windows2000, 
    WindowsXP, 
    WindowsVista, 
    MacOSClassic, 
    MacOSXTiger, 
    MacOSXLeopard 
} 

如果術語「Percentage10」和「Sqf500」是不是藝術方面還是很好的規範定義,數據字典等那麼它不合適將它們用作枚舉中的值。

+0

我澄清了這個問題,請查看。 – 2008-10-07 20:48:13