Re: [問題] 在流程中插入檢查或不檢查 程式怎麼寫

看板C_and_CPP (C/C++)作者 (在線上!=在電腦前)時間1年前 (2023/11/05 01:08), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《saladim (殺拉頂)》之銘言: : 有遇到一個程式流程中 某些步驟可能要檢查或不檢查的問題 想請問該 : 怎麼寫比較好. 語言是使用C++ : 首先我有一個computing class, 裡面有個member function, : 專門負責做計算的動作 而裡面有七個步驟: : class Engine::compute(...arguments...) : 1. compute1 : 2. compute2 : 3. if checking fails this return pre-condition is not satisfied : 4. compute3 : 5. foreach cofig in allowed_user_configurations : 6 if checking succeed then store this configuration : 7. return allowed_configuration : 步驟3)跟步驟6)的檢查是由一個complianceChecker的class來做的: : bool compliance.check(....arguments....) : 現在呢 為了一些原因 提供了一個選項 可以讓步驟3.)跟步驟6.)的檢查不做-也就是 : 永遠檢查成功, 請問要怎麼在不動到主流程的狀況下, 來達成這件事情呢? 已經抽出function的前提下,在這個情況下基本上不用做太多 只要complince裡面member variable可以指定check skip #3, #6 就差不多了 #3 / #6裡面只要early retirm讓你跳過check就好 Eg: ``` class Compliance{ public: bool checkNo3(args...){ if(m_skipNo3) return true; // old logics... // ... } private: bool m_skipNo3{false}; } ``` 以上滿足主流程不變 (除非主流程不是#1~#7而是指#3 & #6的各自function) 更進階就是寫多個module然後做callback chain,但看起來你的情境並不需要 擔心忘記寫有點很奇怪,因為他應該是business logic spec的一部分 真的要更generic的作法,只有一類context適合 就是寫script/low code平台讓user自己搞定business logic 但是做之前要注意,這類平台不用open source或是有足夠客戶使用,下場不會很好... 幾個前提 1. user很懂business logic但是不太熟程式 2. 在binary不改變的情況下切換行為,但是又不想hard code邏輯或每次需求都要改 3. 這些business logic沒人在做unit test或沒有要求 4. 這些邏輯不會經常修改,而且沒有refactor的必要 5. 壞了不會叫你修 (***最重要***) #1 or #2 + #3~#5的情況 可以考慮弄 如果以上都沒有,真的不用考慮太多 因為business logic弄得太generic,不一定有人能幫你debug 至少if else大家都看得懂 真的想要沒有backup或是讓公司不能沒有你的話可以考慮XD 自己看過幾個,一個WPF插custom script,接近純UI所以還堪用,只是要自己生viewer 另一個就真的用script當底甚麼都能寫,然後script除了作者幾乎都沒人能維護XDDD -- 等等,我是不知道妳是看了什麼神槍手的故事,可是為什麼要拿我當靶 (′Д‵) 什麼!是黃忠和后羿的故事?他們拿的不是銃,是弓! 長門,妳手上拿著蘋果跟繩子是作什麼?今天晚餐不是關東煮是烤乳豬嗎? 連爸爸都沒弄痛過我,可不可以不要綁這麼緊,好歹鬆一點讓我有空間逃吧,古泉。 好,我認了,要射就射吧,可是請聽一下在我死前的最後一個願望。 不 要 拿 霰 彈 來.....噗滋(腦漿聲) 摘自「阿虛的最後一餐」 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.160.13.237 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1699117719.A.4F1.html
文章代碼(AID): #1bHdgNJn (C_and_CPP)
文章代碼(AID): #1bHdgNJn (C_and_CPP)