項目管理
水中望月(Smoke and mirrors):向人演示還沒有實現的功能看上去會是什麼樣的。英文緣自一項魔術手法:放出煙霧並趁機用鏡子遮住一件物體,使它看起來像是消失了。
軟體膨脹:隨著版本的升級,軟體越來越消耗系統資源。
不良管理︰在未對主題有足夠認識的情況下管理一個專案。
設計
反抽象:需要的功能並不暴露給用戶,導致用戶要在較高層次重新實現一些功能。
四不像:往往一個設計模型可以暴露不同的接口給用戶,不同的接口表現了模型的不同方面。然而把不同方面的功能混在一起是常見的不良設計。
亂麻球:系統沒有可辨認的結構,就像一團亂麻一樣。
萬應靈:一個對象了解的東西太多,或者要做太多的事情,就好像無所不能一樣。
屠龍術:沒有必要的複雜設計。
競爭危害(Race Hazard): 缺乏預見事件以不同順序發生的後果。
面向對象設計上的反模式
萬能類︰在一個類的設計中,聚集了太多的函式。
吵鬧鬼︰建立某對象的目的只是為了傳送訊息給其它的物件。
溜溜問題︰因結構(例如繼承)極度破碎冗長,而必須花費極大力氣來了解它。
編程
硬編碼(Hard Code):或稱寫死。在實現某系統用途上設死該系統的運作環境。
紊亂代碼︰幾乎無法理解的結構,特別是因為代碼結構的濫用。
超布爾邏輯︰不必要的比較,或是過於抽象的布爾計算。
無用的例外處理︰插入了條件去防止運行時異常,但確在條件為false時又throw(例如:if A not null then process (A) else throw null-exception endif).
方法
剪貼編程(Copy-n-paste programming):寧願拷貝(並修改)現存代碼而非創造通用的解決方案。
反重構: "移除功能性並以註解取代"的過程。
金錘子: 假設個人偏好的解決方案是世界通用。
掩耳盜鈴: 假設一個已知的bug不會出現。
不成熟的最佳化: 根據不足信息最佳化。
重新造個輪子: 拒絕採納現有的解決方案,重寫一個。
造了個正方形的輪子: 當一個優秀的方案存在時,創造一個蹩腳解決方案。
結構管理
相依性地獄:由於需要的產品版本不匹配造成的種種問題,特別是在UNIX/Linux。
DLL地獄:由於動態連線庫的版本、存在與否、和重複所造成的種種問題,特別是在Microsoft Windows。
JAR地獄:源自於不同版本或位址的JAR檔案所造成的問題,常造成載入模組的欠缺。
延伸衝突︰源自於Mac OS不同的延伸嘗試修補相同的系統部分。
一些組織方面的反模式
分析麻痹症:項目分析過程已經長得不成比例,卻聽之任之。
搖錢樹項目:或者叫吃老本,一件有利可圖的產品讓新產品固步自封。
永遠革命:總是要不停地不計代價將現有系統移植到新的環境。
軍隊式管理。沒有容忍異議的空間。
Scope creep: 允許專案範圍增長而沒有適當控制
版本套用
軟體簡介
感興趣的軟體開發人員在學習什麼不該做的軟體設計和實現的快速參考。模式表明筆者的觀察到的頻率的發生和APRB的(反模式審查委員會)的評級表明其潛在的負面影響的系統上有一星評級。
要求
系統要求: wp7.0、wp7.8、wp8.0