CSSE 板


LINE

※ 引述《tinlans ( )》之铭言: : pattern 不是没写过程式的人一开始需要学的, : 而是要先写过很多结构烂烂的程式, : 自己认真思考过怎样改比较好一段时间後, : 才适合开始去学来用的东西。 : 对於撰写需要抽象化的程式部分来说, : 比较没经验的,刚下手一定是结构紊乱的程式码, : 稍有经验的,刚下手会是比较有规律性,但欠缺抽象化的程式码, : 很有经验的,一下手可能就是很抽象化的程式码,但不是任何已知的 pattern, ^^^^^^^^^^^^^^^^^^^^^^ : 超有经验的,一下手通常就会是 pattern。 实际上已知的 pattern 是极多的,记得以前有人列出了超过两百个。 传说中集合 256 个 pattern 就能解决一切问题 XD (这个传说应该是因为 Pattern Language 列出了 253 个建筑用的 pattern, 非常接近 256 这个电脑的"吉祥数" ^^) Design Patterns 一书所列出的,其实是集中在 design 层次,并且加以简化 整合的结果。 原本 pattern language 的关键,就在於以 pattern 为思考的主要元素,并 不断发现与整合 pattern, 而不是把 pattern 限制为特定几个。 当然,尽量运用较多人熟悉的 pattern 有助於软体的共同合作开发。只使用 少数 pattern 的效益也是很明显的,这是 Design Patterns 一书的成功,但 让许多人以为世界上的 pattern 就是那几种,也是它的原罪。 另外,就 pattern 而言,其实并不是只有 design pattern 一类,我想,应该 可以分为以下几类的 pattern: 1. patterns for software architecture 大约包括了 architecture patterns, requirement patterns, ananysis patterns, conceptual patterns, data model patterns 等等细类或不同 名称。 2. patterns for software design 除了 Design Patterns 列出的 generic patterns 之外,还有特定用途的 patterns, 例如针对 communication / network / parallel computing / distributed computing / database management 等等特定程式设计方向的 patterns. 3. patterns for programming 在 POSA (Patterns of Software Architecture) 一书中称为 Idioms, 是 较低阶的 patterns, 主要是一些惯用的程式设计方式。有些人认为应该要 分成 coding patterns 和 programming patterns, 不过这主要是名词的 差异问题而已。 现在很多人因为只知道 Design Patterns 一书所列出的 patterns, 而将三种 不同层次的 patterns 都用少数 generic design patterns 来处理,造成学习 和使用上的负担,其实那是没有必要的,若能善加利用不同层次的 patterns, 可以得到更有效的开发。 4. patterns for business process 由於商业处理的复杂性,以及相关开发经验的累积,近年来不断有人提出 business process patterns 的重要性,也就是 pattern 的概念,不应该 只限於程式逻辑,或是通用的软体结构分析,也适用於商业流程的分析处理 才对。这可能还不是成熟的方法,但发展潜力颇值得观察。 5. patterns for organization 这大概是最为抽象化的 patterns 了,它尝试着解决「创新」和「组织」的 问题,主要是针对需要高度创新的软体组织,如何从人事和工作的组织上就 引入 pattern 的概念。 关於这部分,我的认识有限,似乎 Organizational Patterns of Agile Software Development 一书颇受推崇,可以参考看看。 pattern language 是一种针对人类认知和思维方式而建立的新方法论,从建筑 开始逐渐渗透到各个领域上,试图为人类的创新活动建立一个可以依循的理论, 而 Design Patterns 是过去的一个里程碑,但人们继续在往前走,未来也还有 许多路要走。 将 Design Patterns 列出的 patterns 做为软体开发训练中的一个重要成分, 是一个值得尝试却可能不适合冒进的方法。所谓「叔叔有练过小孩子不要乱学」 确是很好的注解。 不过,更适合的比喻,或许还是武功吧, design pattern 如同剑法一般,要先 打好基础才可以学,剑都拿不稳的,就不用想学剑法了,而学的时候应该要好好 学习,学成之後则不要自限於剑招而不知变通。 不求剑招只求剑意也可以,而且可能更能得到剑法的真意,然而,你最好是非常 聪明,不然高不成低不就的,会很辛苦。 此外,我相当推荐 Pattern-Oriented Software Architecture 这套书,目前有 三本。其中第一本也得到 1996 Jolt Awards 的生产力奖。 它除了强调 architecture patterns, 很有力地补充 Design Patterns 的不足 之外,最重要的概念,应该就是 pattern catelog 和 pattern system 的分别, 许多人运用 pattern 实际上只是在把 pattern 当作一种软体结构的形录,没有 适当地从系统的观点来结合 pattern, 使它们能相互支援和整合。 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.125.136.160
1F:推 godfat:感动 02/10 01:08
2F:推 YuYuHo:大大可不可以把这些好书翻成中文ㄚ,弱者英文超破,很难看懂. 02/10 23:12
3F:推 jeonjh:名称查一下就好了,这些都算基本!要加强一下英文吧?... 02/16 14:02







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:iOS站内搜寻

TOP