這些年來,我看到過大量的反程式設計模式。我感覺應該向大家分享一些。
今天,我要介紹的是被我稱作反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本來是存在的,但在你建立streamreader之前被刪掉了, 你就會得到乙個filenotfoundexception錯誤。
再舉乙個例子:
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...