Soft_Job 板


LINE

※ 引述《azoaho (历史洪流)》之铭言: : 小弟在设计系统的功能时,时常会不知该用什麽准则来判断适合的模式 : 之前曾在某个网站中看到同一个问题,拿来套进 23 个模式之中 : 当下看完後,心想:所以大部份的问题都可以任意套用模式? : 应该不是这样子,否则四人帮就没有必要把它们分成三大类了 : 那到底该如何决择正确的模式 : 这个问题一直困扰着… 请你把clean code三本都看完 可以的话clean architecture也一起 这系列就是在讲什麽时候该用什麽模式的准则 我这篇也讲几个重点原则 1. 保持简单 能用最简单的写法 就用最简单的写法 初学SOLID和设计模式最常见的 就是手了拿了鎚子看什麽问题都是钉子 硬是要用只会过度设计 SOLID和设计模式是非到必要时刻不要使用 因为这东西是一把双面刃 SOLID和设计模式的目的在於让你未来更方便维护、扩充 但副作用是程式架构复杂化 一个弄不好反而更难维护 这就违反你当初使用这个招式的本意 2. 在有必要用的地方再用 承上题 所谓有必要用的地方 是指这个部份未来很有可能需要扩充或改动 如果你懂的基本的架构或OOP 你会自然而然把程式拆成好几个小元件 每一个小元件都可以分成三种类型 第一种是未来极少会在改动 第二种是未来极可能会常常改动 第三种是当下不确定未来会不会改动 第一种就不要再去想设计模式 第二种你可以尝试去加进设计模式 第三种比较有争议 我个人是优先用单纯的写法 在未来真的遇到有改动时 我再重构 还是一样 能不要用设计模式就不要用让设计单纯化 3. 正确模式的迷思 事实就是 没有所谓的正确的模式 一百个问题会有一百种答案 一百个人也会有一百种选择 但还是有个大原则可以依循 那就是先从最简单的模式开始下手 做到一半发现不行不符合需求 再改成其它更复杂一点的模式 很有可能做完了想一想发现怎麽另一个模式更适合? 你再顺手改成另一个模式 所以迭代演进才是重点 一次一次试 一次一次改 一次一次的重构 让正确的模式在程式不断演进之下慢慢成形 这个才是真正的使用到正确模式的唯一方法 而时间一久你会累积更多经验 到时候你自然会进化成看到类似问题脑中自然出现模式的优先顺序 大概就这三点 其实还有很多 书就自己去看吧 要玩这个就是这样玩 会不会觉得 一定要搞这麽累吗? 对就是要这麽累你才会进步 不然你也可以回去写义大利面程式也没差 台湾不重视这个 写程式写了几十年一个模式也不会SOLID完全没概念的满街都是 也不会怎样啦 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 118.169.0.211 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1636161922.A.CC8.html
1F:推 aidansky0989: 推,学设计模式以前命名做好、SRP落实足够应付大多 11/06 09:29
2F:→ aidansky0989: 数情境 11/06 09:29
3F:推 vi000246: 同意你的说法 不会在一开始就套设计模式 而是if else 11/06 09:56
4F:→ vi000246: 越写越多层 不得不重构了 才会开始套设计模式 11/06 09:57
5F:→ vi000246: 当然很大型的系统设计 在一开始就会想好架构 但那是在 11/06 09:58
6F:→ vi000246: 文件需求明确的情况才会这样设计 初学者照这篇原po讲的 11/06 09:59
7F:→ vi000246: 慢慢学就好了 11/06 09:59
8F:推 devilkool: 推 11/06 11:35
9F:推 x246libra: 同样推荐先从架构学起 就算你看了 设计模式 还是组不出 11/06 13:41
10F:→ x246libra: 维护性好的程式码 dp像是 bottom-up 小元件组成大功能 11/06 13:43
11F:→ x246libra: 但是不了解架构 很容易组歪 不知如何应用 11/06 13:43
12F:→ x246libra: 更推荐你去了解 ddd 战术设计每个元件的意义 11/06 13:44
13F:推 x246libra: 同时推荐笑谈软工的文章 https://bit.ly/3bJKTWX 11/06 13:51
14F:推 chuchutaro: 完全同意先写单纯,并保持着持续重构的精神 11/06 14:27
15F:推 su321752a: 推,小弟也是先简单再视需求重构 11/06 19:05
16F:→ viper9709: 推这篇正解 11/06 20:37
17F:推 newhandfun: 看过设计模式後去业界就真的是这样 11/07 17:52
18F:推 jj2564: 大推,不断迭代才是重点。 11/07 23:06
19F:推 pjwck: clean code 三本都是指uncle Bob 出的书吗 11/08 01:09
对就是他 花点时间看完 设计模式也顺便 原典太硬就看深入浅出 ※ 编辑: strlen (118.169.0.211 台湾), 11/08/2021 10:52:29
20F:推 a12838910: 推 感谢分享 之前会一直陷在这槛上 11/08 15:14
21F:推 ZakuSIN: 设计模式我同意 真的是常会有这样情况出现 11/09 21:18
22F:→ ZakuSIN: 但SOLID应该还好? 算是基础概念吧 11/09 21:19







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