反面模式

在軟件工程中 ， 反面模式 （ anti-pattern或antipattern ） 指的是在實踐中經常出現但又低效或是有待優化的設計模式 ， 是用來解決問題的帶有共同性的不良方法 。 它們已經經過研究並分類 ， 以防止日後重蹈覆轍 ， 並能在研發尚未投產的系統時辨認出來 。 Andrew Koenig在1995年造了anti - pattern這個詞 ， 靈感來自於GoF的 《 設計模式 》 一書 。 而這本書則在軟件領域引入了 “ 設計模式 ” （ design pattern ） 的概念 。 三年後antipattern因 《 AntiPatterns 》 這本書而獲得普及 ， 而它的使用也從軟件設計領域擴展到了日常的社會互動中 。 按 《 AntiPatterns 》 作者的說法 ， 可以用至少兩個關鍵因素來把反面模式和不良習慣 、 錯誤的實踐或糟糕的想法區分開來 ： 行動 、 過程和結構中的一些重複出現的乍一看是有益的 ， 但最終得不償失的模式 在實踐中證明且可重複的清晰記錄的重構方案 很多反面模式只相當於是錯誤 、 咆哮 、 不可解的問題 、 或是可能可以避免的糟糕的實踐 ， 它們的名字通常都是一些用反話構成的詞語 。 有些時候陷阱 （ pitfalls ） 或黑色模式 （ dark patterns ） 這些不正式的說法會被用來指代各類反覆出現的糟糕的解決方法 。 因此 ， 一些有爭議的候選的反面模式不會被正式承認 。 這個概念很容易推廣到工程學以及工程以外需要人們付出努力去爭取的領域 。 儘管在工程學以外很少用到這個術語 ， 但其概念是通用的 。