我發現自己非常普遍使用這樣的模式:使用的 「如果/ ELSEIF /其他」 與 「的if/else {if/else語句}」
if (a > b) {
foo();
}
elseif (c > d) {
bar();
}
else {
baz();
}
在這裏點是第二個條件是除非您仔細地遵循程序邏輯,否則不會明顯與第一個連接。這是非常糟糕的事情嗎?如果將上述短語描述爲:
if (a > b) {
foo();
}
else {
if (c > d) {
bar();
}
else {
baz();
}
}
是否出於可維護性原因?有沒有更好的模式,我完全錯過了? 「不明顯連接」位似乎是我的代碼中更常見的錯誤來源之一。
+1漏的划艇FTW – Kurru 2011-04-02 11:54:44
感嘆,這是一個地方,我從很多不同(如果不是大多數)編碼器:我真的喜歡只有一個從函數退出點。我確信這種模式有很多好的理由,但我喜歡最後得到一個回報的清潔度,理想的情況是在評論之前說「到現在爲止,以下是真的:」。 看起來我應該去這個網站上的某個地方閱讀。 – 2011-04-04 13:29:20
@LelandThorpe:嚴格遵守SESE導致[箭頭反模式](http://lostechies.com/chrismissal/2009/05/27/anti-patterns-and-worst-practices-the-arrowhead-anti-模式/),這可以大大提高[圈複雜度](http://en.wikipedia。org/wiki/Cyclomatic_complexity)的代碼(越複雜,越難以維護)。國際海事組織(不謙虛),如果發現自己超過三個深度括號,他們做錯了什麼。嚴格遵守美學(這是所有SESE是,恕我直言)導致不良的編碼做法。 – Will 2011-04-04 13:42:11