反模式

2015 年 8 月 25 日

Andrew Koenig 最初在 JOOP[1] 的一篇文章中創造了「反模式」一詞,遺憾的是這篇文章在網路上找不到。基本概念(就我記得的樣子 [2])是,反模式在開始時看起來像個好主意,但會讓你陷入困境。從那之後,這個詞彙經常被用來表示任何壞主意,但我認為最初的重點更有用。

Koenig 在論文中說

反模式就像模式,只不過它不是提供解決方案,而是提供一些表面上看起來像解決方案但實際上並非如此的東西。

-- Andrew Koenig

這正是讓一個好的反模式與只是一個可以拿來指點嘲笑的糟糕事物有所區別的地方。它看起來像一個好解決方案,這就是它的本質危險性。由於它看起來不錯,明智的人會走這條路,只有在你投入大量心力之後,你才會知道它是個糟糕的結果。

在撰寫反模式的說明時,描述如何擺脫困境(如果你已經走上錯誤的道路)是有價值的。我認為這很有用,但不是必要的。如果沒有好的方法可以擺脫它,這並不會降低警告的價值。

值得記住的是,相同的解決方案在某些情況下可能是好的模式,而在其他情況下可能是反模式。解決方案的價值取決於你使用它的情況。

備註

1: 物件導向程式期刊,第 8 卷,第 1 期。1995 年 3/4 月。隨後收錄於 Linda Rising 編輯的「模式手冊」(劍橋大學出版社)

2: 我沒有論文的副本,所以我主要是靠記憶和一些舊筆記。