Programming 板


LINE

前文吃光光. 先简单回一下. 首先是为什麽需要对系统做 decomposition ? 因为人的脑力有限, 无法同时对付整个系统. (换句话说, 如果人的脑力是现在的好几倍, 那 code 应该会火星化好几倍吧 XD) 被 decompose 的系统就形成了很多 module, 这些 module 必须被一一设计, 实作和维护, 而最後这些 module 必需能合作无间地达成原系统所需功能. 要做到这件事, 各 module 间的关联 (中文不知说啥好, 英文叫 coupling) 必需要减到最小, 不然会太复杂以致於无法组合 (composability) 但单一 module 内部又需要紧密合作, 不能有些本质上复杂的事根本作不出来, 而且不好重用 (reusability). 现在大家熟知的 OO, 跟之前只用 function 的语言就是为了尽量达到这些要求, 将概念上完整独立但又不会太庞大的一组东西(呃, 该怎麽称呼XD) 放在一起, (英文就叫 concern) 一来不用担心与别组较不相关的概念会起冲突 (所以可以比较放心地任意组合) 然後也可以较完整地拿到另一个系统重用 (因为可以较随意组合). 就算要改 code, programmer 也可以专心地改这一个 module 这就叫 separation of concerns (的一种, 还有其它各类的 separation of concenrs) 很不幸地, 有些 concern 是无法单用 function set 或 class set 集合起来的, 注定会散落在系统各处 (或说是各个 module 内), 这情形就叫 crosscutting concerns (也就是说, 不管怎麽设计, 都不可能能模组化) 这时会改 code 就很痛了, 东改一块, 西改一块, 散在几处就要做一样的动作几次. 等下次要再改时, 要又全部找到再一个一个改, 数量一多又会有漏的 XD 为了解决 crosscutting concerns, 目前比较有名的是 feature-oriented programming 和 aspect-oriented programming. 前一个是把该次的 refinement 集中在一处, 称为 feature (好像有点倒果为因, 其实是为了加 feature, 把需要的 refinement 集中在一起 @@) 後一个是用类似 pattern matching 的方式把这种 concern 抓出来, 集中起来叫 aspect. 至於细节, 我也还在学. 不过可以确定的是, FOP 和 AOP 还是有不足的地方, 以後一定会有什麽 XOP, YOP, ZOP 的东西跑出来, 直到人脑也没办法处理这些东西为止 XD --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 71.136.247.250 ※ 编辑: march20 来自: 71.136.247.250 (01/26 15:39) ※ 编辑: march20 来自: 71.136.247.250 (01/26 15:40) ※ 编辑: march20 来自: 71.136.247.250 (01/26 15:41) ※ 编辑: march20 来自: 71.136.247.250 (01/26 15:41) ※ 编辑: march20 来自: 71.136.247.250 (01/26 15:41) ※ 编辑: march20 来自: 71.136.247.250 (01/26 15:42) ※ 编辑: march20 来自: 71.136.247.250 (01/26 15:43) ※ 编辑: march20 来自: 71.136.247.250 (01/26 15:44) ※ 编辑: march20 来自: 71.136.247.250 (01/26 15:44)
1F:推 drkkimo:好文帮推 218.172.206.5 01/26 15:52
2F:推 softwind:如果code会火星化...那IDE应该也要火星化 140.129.36.82 01/26 15:55
3F:→ softwind:有3D的IDE吗? code都是立体的... 140.129.36.82 01/26 15:56
4F:推 march20:忘了说, 这里说的方法是程式语言上的, 71.136.247.250 01/26 16:04
5F:推 march20:有些人是从别的角度出发, 像 pattern, 71.136.247.250 01/26 16:04
6F:推 march20:domain-driven design 71.136.247.250 01/26 16:04
7F:推 march20:这些方法要你不要怕改 code, 但要改得合理 71.136.247.250 01/26 16:05
8F:推 drkkimo:coupling应该是指耦合度 应该越低越好 218.172.206.5 01/26 16:14
9F:→ drkkimo:还有一个是cohesion 是内聚力 内聚力要高 218.172.206.5 01/26 16:16
10F:推 march20:yep:P 71.136.247.250 01/26 16:33







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灯, 水草

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

TOP