反for if程式設計模式

2021-09-01 09:58:16 字數 1031 閱讀 2804

這些年來,我看到過大量的反程式設計模式。我感覺應該向大家分享一些。

今天,我要介紹的是被我稱作反for-if程式設計模式的反模式「如果感興趣可以檢視一下這篇文章:for 迴圈為何可恨?」,也就是人們所說的」我們賣給你整個座位,但你需要的只是乙個邊。」

這是乙個特殊的反for-case模式,其中所有的情況中只有一次會是null。

for (int i = 0; i < 100; i++) 

}

這種情況可以簡單的寫成

do_something(42);
這個反for-if模式可以表現成各種各樣的形式。比如:

foreach (string filename in directory.getfiles("."))

}

它是在乙個目錄裡遍歷查詢乙個指定檔案,如果找到了,就返回檔案的資料流。這段**的一種不是那麼折騰的寫法是

if (file.exists("desktop.ini"))

請注意,兩個版本的**片段具有相同的競爭條件:如果這個desktop.ini本來是存在的,但在你建立stream­reader之前被刪掉了, 你就會得到乙個file­not­found­exception錯誤。

再舉乙個例子:

foreach (object o in hashtable.keys)

等同於

return hashtable["target"];
我猜測這些傢伙不喜歡在圖書館裡通過書名找一本書,因為他們的做法是如此的繁瑣:

他們來到圖書館裡員面前說,「把你所有的書都給我,」然後他們拿著裝滿了上千本書的籃子,坐到牆角裡自言自語:

「不是,這本書的書名不對」,

「不是,這本也不是」,

「標題還是不對。」

「這本書呢?」

」不是,也不是這本。「

」老天,我要這樣一本一本翻到什麼時候…「

反for if程式設計模式

這些年來,我看到過大量的反程式設計模式。我感覺應該向大家分享一些。今天,我要介紹的是被我稱作反for if程式設計模式的反模式 如果感興趣可以檢視一下這篇文章 for 迴圈為何可恨?也就是人們所說的 我們賣給你整個座位,但你需要的只是乙個邊。這是乙個特殊的反for case模式,其中所有的情況中只有...

編碼反模式

1 通用方法 乙個方法處理多個業務,比如修改使用者傳入乙個使用者物件,方法根據郵箱,手機.是否為空來處理修改手機,郵箱等業務 處理方法 每個業務要分開,單一職責 2 物件內的平行方法 a a1,a2,a3 a1,a2,a3 方法中有相似功能。ia a a a,abstract b a1 b a2 b...

SQL反模式總結

1.亂穿馬路 現象 在乙個表鍵中存放多個值,用,類似的符號隔開 問題 這會讓查詢.插入和刪除的效率變得非常低 解決方案 不要在乙個表鍵中存放多個值,將所有原本在乙個表鍵中的值存放到一張單獨的表,在新錶中建立兩個屬性,乙個與原表的主鍵建立外來鍵關係,乙個標明值。例子見表 產品id 經銷商 1 張三 1...