作者paul800526 (大蝌蚪)
看板Soft_Job
標題[討論] 尋找好的軟體框架的方法
時間Thu Aug 30 09:51:30 2018
各位年薪 300 萬的大大好
最近遇到一個問題讓我很困擾
就是我常常在開發一個專案的時候
會不知道有哪些框架是適合現在的專案
可以優化整個專案架構
舉例來說
之前我有開發 facebook chatbot 的經驗
越開發到後面
if else 就越來越多
因為要常常去抓詞彙是哪種狀況
雖然這種情況很煩惱
但是我還是硬幹把他幹完了
只是看著架構越看越覺得醜
也有上 google 打關鍵字像是
"if else chatbot too many"
主要都是說怎麼簡化 Python 沒有 switch 的問題
後來和那時候不是同事的前輩討論
他就建議我用 finite state machine
我才知道這個框架可以用在 chatbot
後來回去想說如果以一個不知道這個框架的情況
要怎麼搜尋這個框架呢
我一樣 Google
chatbot architecture framework
找到的都是 AI NLP 訓練相關的文章
不知道大家在框架選擇上是怎麼搜尋和選擇的
可以幫工作不到兩年經驗的小弟解惑一下
感激不盡
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.136.88.204
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Soft_Job/M.1535593893.A.E14.html
1F:推 ian90911: chatbot這個例子 我剛接觸時跟你一樣if else硬幹...08/30 09:59
2F:→ ian90911: 後來是去line群或者fb社團多聊多逛 聽演講看別人都怎做08/30 09:59
3F:→ ian90911: 也有很多業界實例介紹他們怎麼處理狀態管理的文章08/30 09:59
我也有加一些群組,偏後端開發相關的社群
裡面文章通常很多面向
我也沒有特定想到這個有解所以沒問
結果是被動才知道就覺得很糟糕
4F:→ atgcat: 有蠻多設計模式可參考,寫起來會改成分出很多檔案,但比判08/30 10:06
5F:→ atgcat: 斷式清楚08/30 10:06
design patterm 我有看一些,但是比較想知道找到適用框架的方法QQ
※ 編輯: paul800526 (114.136.88.204), 08/30/2018 10:16:51
6F:推 ashlikewing: 不明白這問題為何會到框架這一層,想要消除if地獄需08/30 10:53
7F:→ ashlikewing: 要改善的是程式架構。不調整這部分的話和你選擇那種08/30 10:53
8F:→ ashlikewing: 框架都一樣悲劇08/30 10:53
我定義的框架是給定專案的抽象層, 使得程式開發的時候可以建立在抽象層上
避免架構雜亂, 如果以我這樣定義框架的話, 是討論框架沒錯吧?
FSM 可以在使用者走到特定狀態的時候保持固定的選擇
而不需要在全域下進行多層的邏輯判斷, 所以可以改善 chatbot 架構
我是這樣定義的
9F:推 jack0204: 為啥不用DB?08/30 11:26
你說的是 Database 嗎? 如果是的話是說把每個使用者流程都存起來
這樣 DB query 不是很吃資源
10F:推 senjor: 有限狀態機其實是大學的基本學科教的 08/30 11:42
11F:→ senjor: 然後段考還會考怎麼設計有限狀態機跟去算有限狀態轉移 Q_Q 08/30 11:43
演算法有, 學的時候有用在圖學上的題目, 但是要直覺的用在程式上還是蠻難的
像是假設今天有個 NP 問題, 在程式裡面遇到了但是不知道要用哪種解法的感覺
※ 編輯: paul800526 (114.136.88.204), 08/30/2018 12:48:00
12F:推 supernow: 語意分析去找微軟相關大廠有出api,消if else用狀態模式08/30 12:37
13F:→ supernow: 去做 08/30 12:37
我看看!! 謝謝
※ 編輯: paul800526 (114.136.88.204), 08/30/2018 12:50:45
※ 編輯: paul800526 (114.136.88.204), 08/30/2018 12:52:00
14F:→ paul800526: 我後來看看發現 state 是 design pattern,我錯了看起08/30 12:55
15F:→ paul800526: 來是我功力不夠QQ08/30 12:55
16F:推 senjor: 演算法跟其他專業的書讀法都一樣,看完一個概念最好實際08/30 13:00
17F:→ senjor: 寫過一次,或者想個應用,這樣會比較好吸收。 08/30 13:00
好噢謝謝
18F:推 ashlikewing: 你在說的東西明明就是軟體架構,混雜一些已學的東西08/30 13:00
19F:→ ashlikewing: 卻沒有好好的消化理解,非常危險08/30 13:00
我好像也有感覺
20F:推 yamakazi: 深入淺出設計模式08/30 13:12
有下載還沒看QQ
21F:推 watashino: FSM寫過verilog就很會用了啦08/30 14:06
沒寫過
22F:推 handsomeLin: 如果是你if else能硬幹出來的東西用DB不可能慢啦08/30 14:34
23F:推 handsomeLin: 隨便講一個10萬筆數據好了 你只做read 50ms以下就能08/30 14:36
24F:→ handsomeLin: 出結果了08/30 14:36
25F:→ cphe: DB快是因為處理資料的演算法都幫你處理好了08/30 14:58
我是在想說這樣資料庫要存一堆使用者的狀態,覺得蠻奇怪的...
26F:→ leolarrel: 如果一開始還不知道用哪種架構,那可以先硬寫,只後再重 08/30 15:52
27F:→ leolarrel: 構 08/30 15:52
好噢謝謝
28F:推 banana13: hash map 08/30 18:44
29F:→ AvatarH: 抓哪一個字會是哪一個情形,使用trie(字典樹)來搜尋對應 08/31 17:06
30F:→ AvatarH: 的動作呢?08/31 17:07
我思考一下 ,之後再來回答
※ 編輯: paul800526 (114.136.105.115), 08/31/2018 19:53:49
31F:推 twntwn: 看open source 09/03 09:41