2011-03-17 23 views
1

這是一個新手問題,但我想我真的不明白最佳做法是什麼。如果3個可能的結果返回值的最佳做法?

基本上,我有一個名爲「emailScan」的方法,它可以掃描數據庫中是否存在電子郵件。這可能會導致三種可能的結果:

  • 電子郵件不存在
  • 電子郵件存在並且關聯到一個人
  • 電子郵件存在,並且註冊到一個人

的問題是,這個方法應該返回什麼?我的想法:

  • 它不會返回布爾值,顯然。
  • 它不會拋出檢查異常,因爲這些都不是特殊情況。
  • 它可以只返回原始的Email對象,並讓調用方法確定它是關聯還是註冊。
  • 它可以返回它代表了三種結果

任何思考一個枚舉?

+1

它肯定會返回**枚舉**。 – Hossein 2011-03-17 17:28:46

回答

6

Enum是要走的路!

public enum EmailStates { 
    DOES_NOT_EXIST, 
    EXISTS_ASSOCIATED, 
    EXISTS_REGISTERED 
} 
+0

maerics給出的名字比我的更好 – adarshr 2011-03-17 17:31:03

+0

對我有意義。 – JasonStoltz 2011-03-17 17:36:14

+0

感謝您的大力支持,它最好遵循Java約定來命名類和枚舉,因此您可以更改爲「EmailStates」。另外,我建議爲每個枚舉值刪除多餘的「EMAIL_」前綴。 – maerics 2011-03-17 17:45:19

2

如果你想知道哪三種情況持有,但不希望任何更多的信息(如電子郵件本身),然後枚舉(甚至只是一個int,讓事情變得簡單)是要走的路。

2

枚舉似乎最適合這種情況,在那裏有一個小的可能值的事實,大多數情況下:

public enum EmailAssociation { NONE, ASSOCIATED, REGISTERED } 
public EmailAssociation emailScan(String email) { ... } 
2

它可能是一個枚舉或者你可以使用異常,如果你只需要處理一個案例(並將其他人作爲錯誤返回)。 如果不是這種情況,我會使用Enum

1

從數據庫獲取數據並對數據運行某些邏輯是兩回事。所以只返回電子郵件對象似乎是最好的方式。然後,您可以重用該功能來搜索電子郵件並執行其他操作。

+0

我明白你的觀點!這不是一個真正的數據訪問方法,但它實際上是對數據進行操作的方法。 – JasonStoltz 2011-03-17 17:38:22

相關問題