C_and_CPP 板


LINE

※ 引述《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://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1699117719.A.4F1.html







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Gossiping站內搜尋

TOP