2011-06-08 53 views
2

有一些code在驗證後執行。
考慮一個變量SOQualityStandards = true;c#處理返回值並執行代碼

這個變量在執行代碼之前被驗證。 我今天來檢查SOQualityStandards

一個跨越兩種方式是

if(SOQualityStandards) 
{ 
    //code to execute 
} 

,另一個是

if(!SOQualityStandards) return; 
//code to execute 

是有兩個之間的性能差異。哪一個我應該考慮。

回答

5

它們具有相同的語義(假設第一個示例中if-block之後函數中沒有其他代碼)。

我發現第一個更清楚,但這是個人喜好的問題。

0

這兩種方法沒有區別。這是個人選擇的問題。

2

編譯器會認爲這兩個選項是相同的,可以將其中一個轉換爲另一個,反之亦然,因此性能考慮是不可靠的。即使性能受到影響,我認爲可讀性/可維護性在這些問題中是一個更大的問題。

我傾向於在這種情況下在開始時做回報,因爲它減少了閱讀方法其餘部分時的縮進和精神負擔。開始時回報測試的州成爲了解該方法時不再需要考慮的州。另一方面,如果塊較大,則需要在整個方法中精神上跟蹤狀態差異。

如果有幾個測試需要完成來保護內部代碼塊,這變得尤爲重要。

0

兩者之間的選擇只是個人偏好(請參閱Sven's answerbomslang's answer)。微型優化在大多數情況下完全沒有必要。

不應該優化執行時間,直到你看到它是一個問題。您可能花費寶貴的時間來添加其他功能或改進系統架構。

在實際需要優化的情況下,循環和遞歸函數通常是第一個看的地方。

如果您需要進一步優化,單線變量檢查和操作仍然是最後優化的一部分。

切記(如Jeffrey said)可讀性和可維護性在大多數情況下是最重要的因素。