[請益] 如何選擇適合的設計模式

看板Soft_Job作者 (歷史洪流)時間2年前 (2021/11/04 23:19), 編輯推噓18(20235)
留言57則, 26人參與, 2年前最新討論串1/4 (看更多)
小弟在設計系統的功能時,時常會不知該用什麼準則來判斷適合的模式 之前曾在某個網站中看到同一個問題,拿來套進 23 個模式之中 當下看完後,心想:所以大部份的問題都可以任意套用模式? 應該不是這樣子,否則四人幫就沒有必要把它們分成三大類了 那到底該如何決擇正確的模式 這個問題一直困擾著… 例如訂單依國別計算不同費用 這問題是用工廠好?還是策略好? 懇請大大們解惑 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.234.121.60 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1636039147.A.7F6.html

11/04 23:26, 2年前 , 1F
策略吧 為啥會用工廠?
11/04 23:26, 1F

11/04 23:26, 2年前 , 2F
其實很多時候不用為套而套吧會把簡單東西複雜化
11/04 23:26, 2F

11/04 23:28, 2年前 , 3F
等你想怎樣寫你最好改也最能看得懂的時候,不知不
11/04 23:28, 3F

11/04 23:28, 2年前 , 4F
覺就會用上了。
11/04 23:28, 4F

11/04 23:30, 2年前 , 5F
推樓上
11/04 23:30, 5F

11/04 23:34, 2年前 , 6F
你聽過太極拳或獨孤九劍嗎 不要拘泥於招式 無招勝有招
11/04 23:34, 6F

11/04 23:46, 2年前 , 7F
我自稱DP哥 工廠模式COMBO策略模式 很常用的
11/04 23:46, 7F

11/05 00:02, 2年前 , 8F
最好的方法就是你寫一遍
11/05 00:02, 8F

11/05 00:15, 2年前 , 9F
DP 是武功 SOLID 是心法 先練心法才看得懂武功
11/05 00:15, 9F

11/05 00:46, 2年前 , 10F
認真說 遇到的時候問題會告訴你該用什麼模式 不然就
11/05 00:46, 10F

11/05 00:46, 2年前 , 11F
是問題還不夠清楚 這時候最好別亂用
11/05 00:46, 11F

11/05 00:48, 2年前 , 12F
可以去看舊程式碼或開源專案 感受一下別人用設計模式
11/05 00:48, 12F

11/05 00:48, 2年前 , 13F
是在幹嘛 只看書上的其實你都感受不到那個規模
11/05 00:48, 13F

11/05 00:48, 2年前 , 14F
像 visitor pattern 就可以去看看 rust serde 函式庫
11/05 00:48, 14F

11/05 00:48, 2年前 , 15F
怎麼用的
11/05 00:48, 15F

11/05 00:54, 2年前 , 16F
濫用模式跟不用模式硬要選一個 大家應該都會選後者
11/05 00:54, 16F

11/05 01:35, 2年前 , 17F
先重構, 重構的過程有機會發現變成某幾種模式
11/05 01:35, 17F

11/05 01:35, 2年前 , 18F
的形狀
11/05 01:35, 18F

11/05 01:41, 2年前 , 19F
但如果情境單純, 也不用硬要重構或是找出什麼模式就是
11/05 01:41, 19F

11/05 01:52, 2年前 , 20F
先重構+1 如果你發現一直寫重複的代碼就是一種徵兆
11/05 01:52, 20F

11/05 01:55, 2年前 , 21F
用工廠的情況也不少 例:多個supplier的connectio量身訂作
11/05 01:55, 21F

11/05 02:00, 2年前 , 22F
模式是在解決你的需求 所以很常都會有一些變形或組合
11/05 02:00, 22F

11/05 02:00, 2年前 , 23F
依據自己經驗去設計 最後會發現你的東西就是某個模
11/05 02:00, 23F

11/05 02:00, 2年前 , 24F
式的樣子
11/05 02:00, 24F

11/05 03:11, 2年前 , 25F
你可以先挑一個來玩 builder最容易上手最好改
11/05 03:11, 25F

11/05 03:41, 2年前 , 26F
一開始先別想太多設計模式是要慢慢修剪的
11/05 03:41, 26F

11/05 07:24, 2年前 , 27F
你可以讀 Refactoring to patterns
11/05 07:24, 27F

11/05 07:24, 2年前 , 28F
首先要能辨識 smells, 然後透過重構改為設計模式
11/05 07:24, 28F

11/05 07:26, 2年前 , 29F
不只可以學習何時該使用設計模式,也能避免過度設計
11/05 07:26, 29F

11/05 07:30, 2年前 , 30F
公司的東西的話 很簡單 都是看薪水給多少
11/05 07:30, 30F

11/05 07:34, 2年前 , 31F
認真看一下書。。。我覺得你肯定沒看書網路文章隨便看
11/05 07:34, 31F

11/05 07:34, 2年前 , 32F
然後整天幻想要怎麼設計不如認真讀書。。。
11/05 07:34, 32F

11/05 08:37, 2年前 , 33F
先重構 +1
11/05 08:37, 33F

11/05 08:37, 2年前 , 34F
過程中應該會有使用哪個模式想法了
11/05 08:37, 34F

11/05 08:37, 2年前 , 35F
剛學設計模式切忌看到什麼 code 就想把它改成設計模式
11/05 08:37, 35F

11/05 08:37, 2年前 , 36F
避免為用而用
11/05 08:37, 36F

11/05 08:43, 2年前 , 37F
最近看到同事為用而用 反而寫出難以維護的程式碼
11/05 08:43, 37F

11/05 08:44, 2年前 , 38F
看起來很厲害 讀起來很痛苦 而且還不符合solid原則
11/05 08:44, 38F

11/05 09:00, 2年前 , 39F
別做出ide都沒辦法幫你trace code就行
11/05 09:00, 39F

11/05 09:03, 2年前 , 40F
#不然接手幫忙修BUG的人會一直問候你親人
11/05 09:03, 40F

11/05 09:05, 2年前 , 41F
最好是有需求、有痛點再去找解決方案,不然容易寫出狗屎
11/05 09:05, 41F

11/05 09:07, 2年前 , 42F
不然一般來說專案架構簡單好維護比什麼都重要
11/05 09:07, 42F

11/05 09:08, 2年前 , 43F
我看過太多過度設計的例子了
11/05 09:08, 43F

11/05 09:18, 2年前 , 44F
先寫一堆爛code然後看相關書籍,然後重構爛code
11/05 09:18, 44F

11/05 10:27, 2年前 , 45F
設計模式的出發點都是可讀可維護好擴充 掌握原則就好了
11/05 10:27, 45F

11/05 14:17, 2年前 , 46F
你對你的程式要有改進的熱誠. do it. pattern自然出現
11/05 14:17, 46F

11/05 15:28, 2年前 , 47F
我覺得先有點經驗再去學design pattern比較實在 一
11/05 15:28, 47F

11/05 15:28, 2年前 , 48F
堆人連繼承多型都不知道該何時用
11/05 15:28, 48F

11/05 18:22, 2年前 , 49F
問這個問題時,就表示哪個都不該選…XD
11/05 18:22, 49F

11/05 18:45, 2年前 , 50F
首先你要認知到的是模式只能當作一種指引,而不是像公式
11/05 18:45, 50F

11/05 18:45, 2年前 , 51F
一樣讓你拿來套的
11/05 18:45, 51F

11/05 23:39, 2年前 , 52F
推濫用不如不用+1
11/05 23:39, 52F

11/06 00:00, 2年前 , 53F
一堆網頁和書都在教壞人硬套設計模式,這個噓是給他們的
11/06 00:00, 53F

11/06 00:00, 2年前 , 54F
。在工作上遇到那種設計模式硬套寫出來的可怕code真的讓
11/06 00:00, 54F

11/06 00:00, 2年前 , 55F
後人白多花一堆時間去理解、而且又在有人疊床架屋繼續從
11/06 00:00, 55F

11/06 00:00, 2年前 , 56F
不好的架構去發展的話,整個很慘,說真的,不套模式都還
11/06 00:00, 56F

11/06 00:00, 2年前 , 57F
好多了
11/06 00:00, 57F
文章代碼(AID): #1XW_dhVs (Soft_Job)
討論串 (同標題文章)
文章代碼(AID): #1XW_dhVs (Soft_Job)