反模式设计_设计模式:模式或反模式,这就是问题
反模式設計
我最近遇到了Wiki頁面“ Anti-pattern” ,其中包含詳盡的反模式列表。 其中一些對我來說很明顯。 他們中的一些讓我想了一下,其他的讓我想了更多。 然后,我開始在頁面上查找反模式“ singleton”,但找不到。 (文本搜索停止在單線態…)
單例是模式還是反模式?
別擔心。 我不會談論單例。 網上對此進行了足夠多的討論 。 現在,讓我僅以單例為例。 在單例的情況下,圖案和反圖案之間沒有清晰的界線。
舉個例子,單例可以很容易地被使用,它很容易理解并且是一個很好的例子。 單例一直很流行,直到幾年前才開始被認為是反模式。 有什么變化? 計算機科學家會變得更聰明,發現他們認為良好的模式實際上是反模式嗎? 從一開始,單例就是一個反模式,我們只是不知道嗎? 還是單身人士本身已經從成為好的設計模式變成了反模式?
我認為,答案很奇怪:這兩種情況。 它與物理理論非常相似。 牛頓定理說,力與加速度和身體質量成正比。 愛因斯坦說這是不正確的,并且速度越大,誤差越大。 牛頓錯了嗎? 是的,在某種意義上。 我們還能使用牛頓定律嗎? 是的,我們可以,實際上是在低速情況下(與光速相比)。
從一開始單身人士就是壞人嗎? 是的,和現在一樣多。 我們還可以使用單例嗎? 是的,我們可以,實際上,在低耗速的情況下我們會這樣做……在簡單問題的情況下,我們不需要單身人士成為反模式的考慮。
反模式似乎與環境有關。 在這種情況下,環境比在物理情況下要復雜得多。 量子理論,相對論或不可逆熱力學(我父親是教授)很簡單,因為它們不考慮人類。 他們只是關于這個問題。
編程是關于人的。
這是我們經常忘記的事情。 當一切開始的時候,都是關于位和字節,寄存器,存儲器和十六進制代碼的。 程序正在運行并且執行不佳。 但是后來變得越來越復雜。 計算機科學成為信息技術。 越來越多的人使用IT,越來越多的人編寫程序。 他們是這樣做的程序員。 即使是一個相對簡單的項目,如果要商業化的話,也需要六到八個程序員。 它們也是“模式或反模式”依賴的環境的一部分。
該環境還包含簡單的事物,例如框架,編程語言,操作系統和其他技術細節,但它們單獨或一起的復雜性都無法與人類媲美。
在就模式與反模式辯論做出決定時,許多人會問一個問題:模式可以用于什么? 這有什么用? 有什么好處? 這些是重要的問題。 如果沒有好處:沒有理由考慮這種模式。 但這并不能使其成為反模式。 如果沒有好處,那么這種方法根本不是一種模式。 重要的問題是,它有什么弊端? 一般的Joe可以通過哪種方式來構建結構。 采用該模式的人射擊自己的腿的可能性有多大? 這不是新事物。 博弈論還指出,這對于最小化最大損失比最大化可能的收益更為重要。
看一個模式,你能告訴我嗎? 可能不是。 在某些情況下,是的。 恭喜,您找到了反模式。 在其他情況下,您找不到任何錯誤的用法。 這并不意味著沒有。 時間會證明。 一般的喬會來,并將以您在最瘋狂的夢中無法想象的方式(或就此而言,夜馬)使用這種模式。
因此,反模式并不是天生的壞事,就像槍支不會殺死人一樣。 錯誤使用模式是不好的。 當人們傾向于以錯誤的方式使用模式時,則它是一種反模式。 單例就是這種情況。
類似的事情可以通過代碼注釋捕獲。 當我開始學習Pascal編程時,我們的老師要求50%的代碼必須有意義。 今天怎么樣? 干凈的代碼說注釋是邪惡的。 有點。 太多的評論氣味。 有時我發現自己參與的項目完全被驅逐。 甚至不允許使用Javadoc。 奇怪的? 這只是他們應用干凈代碼模式的方式。
因此,這些天開始困擾我的問題是,在編程中使用設計模式是一種好模式還是本身就是一種反模式?
翻譯自: https://www.javacodegeeks.com/2014/02/design-patterns-pattern-or-anti-pattern-that-is-the-question.html
反模式設計
總結
以上是生活随笔為你收集整理的反模式设计_设计模式:模式或反模式,这就是问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 全开源纵横支付多平台多功能支付系统源码
- 下一篇: 华为或最早10月份发布新一代nova 1