看板 PHP 關於我們 聯絡資訊
※ 引述《benn0106 (...)》之銘言: : 請問一下 學design pattern對撰寫程式有什麼樣的幫助? : 另外有什麼書 在這方面的 值得去看? : thx 這個問題滿大的 我也不是研究這方面專門的 只能就我自己個人的經驗和體會來說一下 看看就好 design pattern(後皆縮寫為dp)(設計模式、設計範式)是這幾年來很流行的詞彙 大概的理論是說 程式設計有所謂最適合的模型、模式(pattern)(後皆稱pattern) 而大多數的程式設計都跳脫不出dp聖經所提出的23種patterns(印象中是23種) dp一出現,很快就流行了起來。前幾年還出現似乎不會dp就不會寫程式一樣的 這種風潮。 當然這是滿新的東西,還需要時間去證明。dp帶來有好處也有壞處。 好處是:他的確提供了許多實用的pattern可以直接運用在各種情況 壞處是:容易過度設計(over design)、需要實務經驗才能融會貫通 所謂的過度設計,就是太過在意design patterns,堅持要在程式設計初期 就設計出最完美的pattern,而導致整個程式流程拖延 大家都知道,這世界上沒有完美的東西。更不用說程式設計往往各戶需求一改再改 一開始好不容易設計出「完美」的pattern,卻開過一次會以後就被推翻了 因此為了克服over design的問題,又有重構(refactoring)的出現, 不過那又是另一個故事了。 我個人的觀點是,因為我寫程式很久,dp才出來。一看之下,我發現有許多我自己 很得意的程式寫法,居然裡面都有,還有些更好!(當然 也有些我覺得我的方法更好) 這讓我相當shock啊...要是當初有這本書,我就不用花這麼多心力想出這些寫法了。 不過話又說回來,如果當初我直接看書,恐怕也看不太懂。 看過一個比喻很好,他把dp比喻成開車的捷徑。假設你每天開車上班 時間久了你就會知道,假設塞車的話,你要在哪個路口改道才能更快到達 但是假設你根本不熟這些路段,就算別人直接告訴你在哪條路右轉、左轉 對你來說也是沒有用的。 回到主題來,我可以給一些建議,什麼人該學/不該學 design pattern 1.你不是寫物件導向語言的,可以不用學。dp基本上是基於OOP的,非OOP language 要實做會比較困難(php也有難點) 2.你已經寫程式好一段時間,有些自己的心得,想更進一步的人 可以參考一下dp 3.你自己實做的專案數還不夠,碰到的問題/解決的問題還不夠多的人,現在看dp 只會走火入魔。(就像靈鷲宮石壁上的武功圖譜,功力不夠者觀之有害) 最後,design pattern真的不是全部,他也不是適合用在所有的狀況 唯有當你掌握所有dp,然後能真正活用,不受限於dp,才能算是學會了design pattern 要視情況而改變,不要墨守成規。 差點忘了書... dp最經典的書莫過於四巨頭出版的Design Patterns http://0rz.tw/cd1Wz 有一本php的有提到一點dp,但是他只有稍稍帶過 http://0rz.tw/761WK 先這樣...有什麼問題或意見,歡迎在版上大家一起討論:) ps:剛剛才發現0rz.tw把我寫的php function放在首頁XD 賀! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.162.85.221
cocakl:好文一推! 10/13 04:14