2011-06-05 28 views
5

如果條件或者只是一個return語句,是否有任何方法可以將它合併爲一個?當多個條件結束時崩潰if語句

 public bool SomethingEnabled 
    { 
      if (!condition1) 
      { 
       return false; 
      } 

      return condition2 
       && (condition3 || !condition4); 
     } 
+3

你爲什麼要這麼做?當然,你沒有受到錯誤的觀點,即更少的代碼行數=>更快的執行時間,對吧? – 2011-06-05 04:46:48

+0

@Cody - 接下來你會告訴人們沒有聖誕老人。 – 2011-06-05 07:17:10

回答

7

這相當於:

public bool SomethingEnabled 
{ 
    return condition1 && condition2 && (condition3 || !condition4); 
} 

但在可讀性和可維護性的利益,我會強烈告誡不要寫代碼太聰明。

+0

我不認爲你需要在'(condition2 && ..)'附近加上括號' – 2011-06-05 04:21:44

+0

我想你是對的。編輯。 – 2011-06-05 04:22:40

+0

我認爲給予'trutheality'的答案是公平的。他是第一個實施時間最短的人。 – 2011-06-05 04:24:55

2
return condition1 && condition2 && (condition3 || !condition4); 
2
return condition1 && (condition2 && (condition3 || !condition4)); 

的首要條件是返回false,如果條件1爲假。如果condition1爲false,條件將完全評估爲false。如果這是真的,它就會評估其他方面的情況。

+0

@Matt我輸入緩慢,並有錯別字。我能說些什麼:P – Aleadam 2011-06-05 04:23:43

1

更好的名稱和小功能將幫助:

public bool SomethingEnabled 
{ 
    if (IsInvalid) return false; 

    return IsInReadyState && IsInOtherState; 
} 

public bool IsInvalid 
{ 
    return !condition1; 
} 

public bool IsInReadyState 
{ 
    return condition3 || !condition4; 
} 

public bool IsInOtherState 
{ 
    return condition2; 
} 
+0

好感。 「IsValid」會比「IsInvalid」更具可讀性的代碼(考慮它們與「!」結合時)。 'SomethingEnabled'可以進一步簡化。 – Johnsyweb 2011-06-05 05:23:06

+0

@Johnysweb - 是的,缺乏背景使我很難展現出我想表現的東西。 – 2011-06-05 05:40:07

+1

是的,是的,有一千次是的!智能可讀性。 – 2011-06-05 05:50:51