推 cocakl:好文一推! 10/13 04:14
※ 引述《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