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 -- 等等,我是不知道你是看了什麽神枪手的故事,可是为什麽要拿我当靶 (′Д‵) 什麽!是黄忠和后羿的故事?他们拿的不是铳,是弓! 长门,你手上拿着苹果跟绳子是作什麽?今天晚餐不是关东煮是烤乳猪吗? 连爸爸都没弄痛过我,可不可以不要绑这麽紧,好歹松一点让我有空间逃吧,古泉。 好,我认了,要射就射吧,可是请听一下在我死前的最後一个愿望。 不 要 拿 霰 弹 来.....噗滋(脑浆声) 摘自「阿虚的最後一餐」 --
QR Code



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.160.13.237 (台湾)
※ 文章网址: https://webptt.com/cn.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灯, 水草

请输入看板名称,例如:e-shopping站内搜寻

TOP