2010-05-29 46 views
2

這個問題困擾了我多年,現在似乎還找不到好的解決方案。我在PHP和Java中工作,但是這聽起來像這可能是語言不可知的:)對魔法數字戰爭中的參考表值

假設我們有一個標準的狀態參考表,它包含某種實體的狀態ID。更進一步,我們假設表格只有5個值,並且會保持這種狀態很長一段時間,偶爾還可以添加新的狀態進行編輯。 當你讀取一行並需要查看它是什麼狀態時,你有2個選項(至少我看到它) - 把它的直接ID值(即是幻數)或使用一個命名常量。後者似乎更清潔,但問題是那些命名常量應該離開?在模特課上?在使用這個特定常量的類中?別的地方?

回答

1

這聽起來像你想要做的是一個枚舉值。

這是一個已經映射到一個恆定值的文本名稱值,這將是像

Statusone = 1 
Statustwo = 2 

然後在你的程序的任何地方,你可以refrenece statusone,編譯器會看到爲1

我不知道這是否存在於PHP,但我敢肯定它在Java

編輯在迴應一些評論

我通常會將枚舉值放在某種全局命名空間中,或者如果您在特別使用該類時只需要它們,則可以將它們放在課程級別。

+0

你甚至可以在一些關係數據庫中使用枚舉 – 2010-05-29 19:57:49

+0

@tim mahy,我以爲你可以做到這一點,但我不確定 – msarchet 2010-05-29 19:59:40

+0

嗯,當然,可以使用的枚舉,或者只是普通的常量。這不是問題:)問題是 - 你把它們放在哪裏? – 2010-05-30 00:53:02