[討論] FSM狀態機程式架構是不是災難?
吐泡一下
最近在維護一個交易老程式碼
就像是依照流程圖畫出來的狀態機實作
主狀態機有N個case
每個case又各自註冊可以重複的條件
FSM主要的狀態是有順序的
但是下面登記的function重覆性有87%
一個flag就可以解決的事情搞到變成很巨大的狀態機
有股想砍掉重練的衝動...但是只能自己驗證
QQ
--
我認為看設計 良好設計下可以迴避可能問題
設計問題…不要怪東怪西
主管請你來是維護的,亂動手腳而不提出規格變更申請是找死
不是 幾乎所有DP教材都會講到SM
87%像的程式碼沒有共用code,這不是fsm的問題吧
IC數位設計都是狀態機啊
如果改狀態,大家都自己去異動flag就好,那才是真正的
災難
要看驗證還有主管同意
fsm最好要有辦法auto gen流程圖,不然維護起來很痛苦,
而且要是每個流程都在那邊改一堆singleton..算了
各有好處吧 設計模式看情況用 flag遇到大架構要改直接
累死
用 flag 也會有 flag 的雷
如果每個 func 的業務邏輯是獨立的, code 有 87 %
像也不是問題
把看起來一樣的程式碼共用等於把所有業務邏輯耦合在一
起,這更雷
怎麼看都覺得問題是實現架構的人
沒壞的東西不要修
存在必有道理. 人的問題不要怪東西
重複不表示他們可以同時被改
大部分是. 原因很複雜不能歸咎於一處.
最大的問題常發生在幾處:
- (後續)需求就超出設計之初的範圍
- 維護的人沒有照著狀態機的方式來撰寫邏輯
邏輯分離得好就算switch也能運作得很好.
狀態機有點像是緊錮圈.是頭要去適合圈.
不是每個開發者/團隊都有受過足夠的訓練能用得好.
沒壞的東西不要修,但頻繁修改(例如一樣的邏輯要改n個
地方,然後變數還不一樣) 那到底要不要修呢
在沒有提出更好的設計前別說是災難
FSM明明是個好東西
我接收過這種賺錢中程式碼,我直接翻寫掉了,我滿肯
定
不是狀態機的問題
標題是災難,看一個程式有問題,就說整個世界有問題。
差多了吧...感覺上是你不知道為何要用FSM
邏輯規模大到覺得測試麻煩大概就可猜想你不應該改成flag
自己為是阿,你快搞懂後把狀態數合併吧
使用FSM 肯定不會太災難, 用flag 才災難
聽你在屁 10幾個flag在那邊if else你連文件都寫不出來
你是不是要說沒文件是災難
誰叫你要用狀態來實作fsm,用class或variant不好嗎
你才是災難,跟程式沒關係
用flag才是災難
三樓正解
這個還真不一定
有辦法提供sample code給大家討論嗎?不然也只是聽你抱怨而
已
怎麼感覺你比較雷
不然有更好的寫法嗎?
笑死 自己不會改狀態機說那是災難
狀態機如果文件還在 不容易大災難
至少很容易理解他裡面在幹嘛
flag災難中的災難
沒有FSM的話就是一堆if-elseif 有比較簡單?
FSM是有用的控制架構 會變成災難通常是用的人的問題
另 砍掉重練可以 但test case涵蓋率要趨近99.9%以上
尤其是邊界條件或很少出現的條件的test都要涵蓋
先生出100% coverage 的test env再改阿XD
flag是災難 所以把flag每個組合都弄成state就不是災難了
擴展便利,修改便利,過度最佳化不一定是好事
若真如你說,那應該有大量的狀態轉換可以縮減吧,離散
數學基本概念
爆
[心得] PCIe & NVME Protocol Study大家好,我目前任職於某家SSD韌體,主要是負責NVMe Front-end的部分,Front-end主要 負責PCIe和NVMe protocol的firmware porting,所以必須study這兩份spec。由於spec 的內容過於龐大,所以我習慣會用網誌做筆記,一方便怕自己忘記,一方面也可以在遇到 問題的時候快速查詢,當然我所寫的都是我對於spec的理解,所以希望有這方面的專家, 可以討論不同的見解,也歡迎大家討論與指教。爆
[情報] 老巴:鉛筆因為MVP的事分心而不在狀態"Joel Embiid is so distracted in my opinion by this MVP thing. He's not there to night" — Charles Barkley 老巴:在我看來,鉛筆因為MVP的事情分心了,他今晚不在狀態。58
[閒聊] Unified 狀態如題 這把看起來中路好點了 但Uni5怎麼還是一樣 把把被推 是狀態真的不好嗎 還是怎樣65
[閒聊] 劉翔現在這個狀態太鬼神了吧= =?今天看到劉翔IG 明天開蹦泰國場 那個狀態 真得逼死自己 看了其實真的很感動 為了台灣 為了自己 乾到沒話說 熱狗王也很猛 但是感覺劉翔這次狀態 應該有機會挑戰拿奧賽資格 乾到真的沒話說了58
[請益] 大家有遇過程式碼被抄襲的情況嗎?朋友沒發文權限代為轉發 大家好,小弟的公司最近遇到程式碼被一家同業抄襲 (產品名稱:樂樂團購訂單管理系統), 我們原本上架一個 Google Chrome Extension 是給訂購用戶使用的, 所以沒有開放搜尋,38
[問卦] 現在是不是呈現擺爛狀態小弟夢到辦公室有人竊竊私語 情景在西瓜市 西瓜市目前確診也沒雙北那麼多 他的小孩去游泳 同樣在泳池有4,5個確診 被匡列隔離37
[問題] 選手狀態看積分到底準不準?從以前開始 我就常聽到有人用韓服積分來判斷一個選手狀態 像是今年scout韓服積分掉到剩大師而已 狀態也的確沒這麼好 不過靠著虐爛隊也拿了10個mvp就是29
[問卦] 2014台電:會讓所有設備維持在最佳可用狀態2014年的時候核四準備封存 那時候台電說 台電會讓核四所有設備維持在最佳可用狀態 未來由公投決定是否啟封 確保可以在最快時間重啟9
[閒聊] 你們的指甲狀態如何跟大家聊聊天~ 你們的指甲都是什麼狀態壓? 素甲、貼甲片、擦一般指甲油、做光療 最近在考慮試試看光療 順便參考一下大家的意見:)- 其實量子特性也適用 Covid 19,你只要不去篩檢(即觀察),你就處於既確診又無確診的疊加狀態,你一篩檢,疊加狀態就會坍縮,變成必定是其中之一的狀態,即不是確診,就是無確診,所以真的,不篩檢就沒事,不篩檢你就是確診同時也是無確診,就沒事了,是不? ----- Sent from JPTT on my Samsung SM-M115F. --