如果條件或者只是一個return語句,是否有任何方法可以將它合併爲一個?當多個條件結束時崩潰if語句
public bool SomethingEnabled
{
if (!condition1)
{
return false;
}
return condition2
&& (condition3 || !condition4);
}
如果條件或者只是一個return語句,是否有任何方法可以將它合併爲一個?當多個條件結束時崩潰if語句
public bool SomethingEnabled
{
if (!condition1)
{
return false;
}
return condition2
&& (condition3 || !condition4);
}
這相當於:
public bool SomethingEnabled
{
return condition1 && condition2 && (condition3 || !condition4);
}
但在可讀性和可維護性的利益,我會強烈告誡不要寫代碼太聰明。
我不認爲你需要在'(condition2 && ..)'附近加上括號' – 2011-06-05 04:21:44
我想你是對的。編輯。 – 2011-06-05 04:22:40
我認爲給予'trutheality'的答案是公平的。他是第一個實施時間最短的人。 – 2011-06-05 04:24:55
return condition1 && condition2 && (condition3 || !condition4);
return condition1 && (condition2 && (condition3 || !condition4));
的首要條件是返回false,如果條件1爲假。如果condition1爲false,條件將完全評估爲false。如果這是真的,它就會評估其他方面的情況。
@Matt我輸入緩慢,並有錯別字。我能說些什麼:P – Aleadam 2011-06-05 04:23:43
更好的名稱和小功能將幫助:
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;
}
好感。 「IsValid」會比「IsInvalid」更具可讀性的代碼(考慮它們與「!」結合時)。 'SomethingEnabled'可以進一步簡化。 – Johnsyweb 2011-06-05 05:23:06
@Johnysweb - 是的,缺乏背景使我很難展現出我想表現的東西。 – 2011-06-05 05:40:07
是的,是的,有一千次是的!智能可讀性。 – 2011-06-05 05:50:51
你爲什麼要這麼做?當然,你沒有受到錯誤的觀點,即更少的代碼行數=>更快的執行時間,對吧? – 2011-06-05 04:46:48
@Cody - 接下來你會告訴人們沒有聖誕老人。 – 2011-06-05 07:17:10