作者taiwancat (月季)
看板PHP
标题Re: [请益] 寻找一个结构化的PHP专案
时间Wed Oct 11 12:40:15 2006
※ 引述《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
1F:推 cocakl:好文一推! 10/13 04:14