Soft_Job 板


LINE

先讲结论: 我反对原文的结论「OOP易学难精」 就我个人到现在的感受是「难学易精」 为什麽呢? 以下分享个人看法 不管是不是OOP,其实种种软体层面的架构手段主要都是想解决一个问题 「让一个庞大复杂的软体专案变得更好维护」 这又可大概分为两个方向 1. 可扩充性 面对新需求时会不会难以改动,是不是每次加功能都要改一堆地方? 常常动一个小地方,造成其他看似无关的模组坏掉? 2. 可维护性 程式码的逻辑是不是很好理解 会不会一个新人来看几个礼拜还是黑人问号 每一份档案、类别、函式 甚至到每一行程式码的目的,是不是都足够明确 当然,以上两点是有相关的 这两点的重要性,就算是刚上班几个月的新手,也是非常容易理解 而OOP里面的什麽pattern、什麽SOLID原则 其实说穿了也都是在让程式更好维护和扩充而已 「难学」,是因为一开始接触OOP,因为其概念繁多 如果没有掌握核心思想很容易就被各种各样的名词给唬住 「易精」,是因为那些繁杂的概念其实都只是手段,目的是很明确易懂的 OO的核心观念:「抽象化」 是为了让外面的使用者只看到必要的介面 不受内部细节的改动影响 而实作者只在乎如何满足定制好的介面 至少80%的design pattern,都是在告诉你该怎麽把抽象化做好 factory pattern 告诉你创造物件的逻辑要抽象化,外面就不必在乎实作类别的改动 strategy pattern 告诉你行为的抽象化可以用组合,达成更好的解藕并可在runtime时更换 iterator pattern 告诉你聚合类的物件可以提供一个抽象的介面 让使用者不须关心内部时做的资料结构就可以存取所有item 另外所谓好的程式码,怎麽会是junior没办法分辨? 要是你用了很多OOP的手段,但是没办法轻易解释得让你们公司的新人听懂这样做好处是 什麽 那大概就是你认为的好code其实没那麽好 没有搞懂OOP在干嘛,以为只是把code放在class内就算OOP 然後又看到原文这种似是而非的观念,我是不认为会有什麽帮助 以原文提到的service object为例 的确这是一个有争议的pattern 但要说他没有内聚性是一件很奇怪的事情 service object其中一目的就是把domain相关的逻辑集中起来 这些逻辑本身就是紧密相关的 要用文章内提到CR值去说他没有内聚性,真的是怎麽看怎麽怪 真的很讲究OO,拆类别的时机也不应该是参数重复出现什麽的 而是现有class的职责太多吧 最後 其实软体架构的名着Clean Architecture 就已经很丰富又很好懂了 每个阶段看都有不同的感受 真的有想搞懂OOP应该去弄一本来读读 而不是在这边算什麽CR值... --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 58.114.218.170 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1589909867.A.FFC.html
1F:推 trojan: 很棒,言简意赅 05/20 01:53
2F:推 onegoman: 推 05/20 02:16
3F:推 bibo9901: 推,那个CR值跟本垃圾 05/20 02:25
4F:推 tmacmm: 不能同意更多了 05/20 03:08
5F:推 gn1943141: 认同本篇除了难学易精,很多设计大家都知到,但实作不 05/20 08:00
6F:→ gn1943141: 一定能写出漂亮的架构 05/20 08:00
7F:推 qrtt1: Clean Architecture 新手要看有点吃力,但随着经验增加会 05/20 08:44
8F:→ qrtt1: 越来越上手的。前阵子也试着练习了一下,还写了个记录 05/20 08:45
9F:→ qrtt1: http://bit.ly/39xC9Ar 记录的位置 05/20 08:45
10F:推 qrtt1: https://bit.ly/3fZThCx 这是有点烙赛的 talk 版本 05/20 08:48
11F:推 t64141: 同意 05/20 09:45
12F:推 vi000246: 同意 oop是用来解决问题 不是制造问题的 05/20 09:45
13F:→ vi000246: 能解决问题的都是好OOP 05/20 09:46
14F:推 Masakiad: 如何把抽象做好比较接近SOLID,DP是延伸SOLID应用,如 05/20 10:09
15F:→ Masakiad: 何在遇到或设计初始选用适合的DP,背後包含整体架构上、 05/20 10:09
16F:→ Masakiad: Domain Knowlege、Force等等得考量。跟单纯探讨把抽象 05/20 10:09
17F:→ Masakiad: 做好算不同层次的概念。 05/20 10:09
18F:推 bnd0327: 大家可能被KPI压榨怕了,但我觉得拿来自己比较还好啦 05/20 11:02
19F:→ bnd0327: 另外推这篇观念清楚 05/20 11:02
20F:推 strlen: 另外提醒SOLID和DP都是要「看情况」用的 不要以为一直用一 05/20 11:56
21F:→ strlen: 直爽 OOP写过头是会有over design的症头的 而且这症头还不 05/20 11:56
22F:→ strlen: 地方有 甚至很多知名开源专案都是一堆没必要的design 05/20 11:57
23F:推 coder5566: 推,好文 05/20 12:23
24F:推 yyhsiu: 很同意「目标」,不要把教科书上的全部照搬就觉得是 clean 05/20 15:18
25F:推 genius945: 推,都是为了达成目标的手段 05/20 20:57
26F:推 alihue: 你的难学在指写,精在指读懂 05/20 21:11
27F:推 virgil246: 借串问 那clean code需要读吗? 05/20 22:49
28F:推 fantasychese: 建议先读clean code就好 clean architecture去看 05/21 01:52
29F:→ fantasychese: Uncle Bob原始演讲 後来出的书其实写得不怎麽样 05/21 01:53
30F:→ electgpro: 你的精可能只是别人认为的初阶而已 05/21 06:34
31F:→ electgpro: 关於 clean code,我刚读完觉得很不错,现在觉得比较 05/21 06:36
32F:→ electgpro: 像心灵鸡汤 05/21 06:36
33F:→ abc01251: 同意~说穿了所有Pattern目的都一样 05/21 12:36
34F:推 paul7751: 推 好文 05/21 17:05
35F:推 art1: 看过高手写的 java 程式才第一次了解到 OOP 的威力,好读好 05/21 19:08
36F:→ art1: 懂好修改 05/21 19:09







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

请输入看板名称,例如:Boy-Girl站内搜寻

TOP