Re: [问题] 在流程中插入检查或不检查 程式怎么写

楼主: wulouise (在线上!=在电脑前)   2023-11-05 01:08:37
※ 引述《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

Links booklink

Contact Us: admin [ a t ] ucptt.com