2009-02-05 58 views
5

我正在使用數據庫後端的10頁網站。有500多個對象正在使用,試圖在ASP.Net中實現MVP模式。我從一個單頁面追蹤代碼執行,我的手指已經在Visual Studio中的F-11上運行了大約40分鐘,似乎沒有結束,可能有1000多個方法調用一個網頁!然而,如果只有50個對象是一件事,那麼代碼執行會在所有這些對象中徘徊,就像數百萬螞蟻瘋狂地在他們巨大的土墩房子裏一樣,充斥着對象隧道。 因此,一個新的反模式誕生了:AntFarmAntFarm反模式 - 避免策略,解毒藥幫助治癒

AntFarm也被稱爲「OO-Madnes」,「OO-Fever」,OO-ADD或簡單的設計模式吸毒者。

這不是我第一次看到這個,也沒有我的同事在其他公司。看來,這種風格正在積極推動,或在任何情況下是誤解衆多的OO/DP福音書四處走動...

我想介紹反模式的反模式:商品及服務稅或「Get Stuff Done」AKA「Get Sh ** done」AKA GRD(GetRDone)。這種模式專注於它所說的話,以簡單的方式完成任務。我可能會在後面的文章中試圖詳述它,或者請在這個解毒劑模式上分享你的想法。

無論如何,我正在寫AntFarm反模式的一個很好的例子(作爲獎金,沒有文檔或評論)。請分享您對這種反模式如何變得如此重要的想法,我們如何避免它,以及如何在一個必須與之合作的現場系統中撤消或處理這種模式!

+0

對象是否經過單元測試? – 2009-07-22 19:33:48

+0

很好的問題,我認爲開發團隊相信他們正在做一些單元測試......就像他們實施的許多其他模式一樣,他們會以一個想法開始,然後在激烈的戰鬥中它有時會開始分崩離析。有了這個複雜的體系結構,我不確定自己的unnit-testing會有多大的幫助。 – alchemical 2009-07-23 16:16:56

回答

8

我認爲帕爾納斯幾乎把它釘在On the Criteria to be used in Decomposing Systems into Modules。每個模塊都應該隱藏一個設計決策,一個可能在未來發生變化的決策。一般來說,沒有什麼可隱藏的模塊通常只是開銷。他並不是完全在談論班級,但我認爲推理仍然適用。

1

感謝Glomek這篇文章是針對一個有趣的問題空間,它是面向對象的核心,即如何設計你的對象......成功或失敗,謝謝你的鏈接。

哦,是的,反模式設計可以稱爲「螞蟻山」,這是一個更清晰的描述,我認爲。我確實認爲它現在是相當不錯的,而且似乎在不斷增長......我仍然想知道我們如何能夠擺脫它,並且寫出更清晰,更簡單的代碼,只需最小的複雜性就能完成工作。

3

如果是確因過度設計(這聽起來像它),然後這裏有一些同義詞您:

Gas Factory
魯布·戈德堡機械
荒地魯賓遜玩意兒

但我個人的名義對於這個「嘗試太F#$%3n困難」。節哀順變。

乾杯 阿德里安

+0

這是放置它的好方法(後面的描述)! – alchemical 2009-07-13 18:32:44

2

許多文件,其中一個會做。討厭。 10個網頁的500個對象似乎是一個瘋狂的比例。 您是否考慮過在解決方案上運行代碼分析?可能會給你一些有趣的數據來反擊。

另外我會打電話反反模式KISS。

0

這裏的問題是你的設計模式本身是非OO的。從非OO模式開始,嘗試將其作爲「對象」來實現,最終會導致混亂。

僅僅因爲系統是在OOPL中編寫的,不會導致系統OO。

0

如果您認爲螞蟻農場是通過使用簡單代理(螞蟻)來探索複雜問題空間(螞蟻農場)的有效方法,那麼它開始看起來反而更少了反模式。 (a)它很難適應你腦海中的所有東西(不管它是否是OO)和(b)它的困難性OO積極地減少了將它全部放在頭上的需要