2014-03-19 38 views
0

我有一個是這樣的一個說法:是必需的默認情況

public $type function_name($enum e){ 
if(e != null) 
switch(e){ 
case A: return x1; 
case B: return x2; 
case C: return x3; 
//default: do some operations 
} 
// default or e = null 
do the exact same operations 
} 

我的問題是:因爲默認情況下,該方法的其他治療,是否有必要(在良好的條件編碼風格)將其添加到switch語句(基本上,複製代碼爲「如果有其他事情發生」 - 在這種情況下,默認爲開關,e = null等)?

+1

重複的代碼,沒有什麼更好的總是不好 – deviantfan

回答

0

默認情況在Switch-Case中不是必需的,但是如果非定義的情況發生,使用它並定義默認情況是一種好習慣。如果你複製你的代碼,那就不好!

希望它有幫助。

0

默認情況下是不必要的,但你應該總是擁有它並記錄/拋出異常。如果傳遞的值出現錯誤或問題,您將馬上知道問題所在。

0

如果你把它添加到default條款,最後一行

throw new YException(); 

死代碼

請注意,在任何情況下,代碼都將到達最後一行。如果e符合A,B or C的情況,它將達到return語句,因此它將退出該函數。如果這些情況都不符合,則會到達default中的throw

結論:你應該把它添加到default條款(這是一個很好的做法,始終包括default),並刪除最後throw線。

+0

它不會因爲它也處理e == null情況。 – Madalina

+0

你是對的,但我不認爲你想拋出*相同的例外*因爲這是不同的問題。 – Christian

+0

假設我這樣做。也許在大多數情況下,我不會在這種情況下這是一個無關緊要的問題。但也許有一些我可能真的想要執行相同的操作(拋出異常或其他)。 – Madalina

0

如果與開關組合用於相同變量對我沒有意義。 它可以工作,但它要求麻煩。 爲什麼不把異常作爲默認操作?比你根本不需要重複的代碼。