作者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/cn.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