2017-07-14 122 views
0

如何降低許多ifs的複雜性以檢查相同的值,我正試圖清理我的代碼,並且在這種情況下我面臨非常高的複雜性!
P.S.它不是如果...其他情況下它只是很多如果拋出異常!如何降低這種情況下的複雜性?

void function(String text){ 
    if(text==null) 
    throw new exception(); 
    if(text.isEmpty()) 
    throw new Exception(); 
    if(text=="test") 
    throw new Exception(); 
    ..... } 
+2

「代碼清理是指編寫代碼的行爲,以便從內存和文件系統中清除剩餘的數據結構和其他不需要的材料。**它與重構代碼不一樣,它使源代碼本身更易於理解,維護和修改。 *「[codereview.se]已經結束了< - – Will

+0

I gu這是Java的。 C#有String.IsNullOrEmpty(s)。你可以做一個類似的功能 – pm100

回答

0

由於每個條件做同樣的事情,你可以讓他們是不同的。但是,由於我不知道您正在使用的語言,因此可以使用「C#中的isNullOrEmpty()」來簡化null和isempty檢查,另外,您應該使用字符串比較來檢驗test =「test」。

最好是不要拋出異常,除非必要。

+0

謝謝你..我想我會用你的建議 –

0

如果文本爲空或空白,則不必拋出異常,只需退出函數即可。拋出異常是代價高昂的。

if(test==null || text.isEmpty() || test="test" == 0) 
{ 
    throw new Exception(); 
} 

你不能因爲他們刪除這些情況:我會在同一個if語句檢查這些狀況由「OR」隔開,並退出功能,如果真

+0

是的,你是對的,但我正在使用jUnit寫測試用例,所以我必須測試我的代碼中的每一行。你對這種情況的建議是什麼? –

+0

我必須忽略檢查null和空嗎? –

+1

您究竟如何體驗高度複雜? –

0

你可以這樣做:

if (string.IsNullOrEmpty(text)) 
{ 
    throw new Exception(); 
} 

或者,如果你只想要的代碼執行時text不爲空或爲空,你可以這樣做:

if (!string.IsNullOrEmpty(text)) 
{ 
    // do something 
}