作者wulouise (在线上!=在电脑前)
看板C_and_CPP
标题Re: [问题] 在流程中插入检查或不检查 程式怎麽写
时间Sun Nov 5 01:08:37 2023
※ 引述《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/cn.aspx?n=bbs/C_and_CPP/M.1699117719.A.4F1.html