在实际项目中,往往有很复杂的流程,随着项目的推进,可能流程有会有改动,如果前期代码没有做好流程管理,对后期的维护带来巨大的麻烦
没有流程控制前,代码可能是这样的
if (/** 参数1 */) {
if (/** 参数2 */) {
if (/** 参数3 */) {
// 流程1
} else {
// 流程2
}
} else {
// 流程3
}
}
这样的写法导致后期如果流程稍有改动,可能代码就会大变动,而且时间一长又要重新看代码,才能理清逻辑
流程控制
-
先理清每个流程,定义好状态机,分别赋予流程一个状态
const STATUS = { process_err: 0, process_1: 1, process_2: 2, process_3: 3, process_4: 4 };
-
确定每个流程要做事情,并封装好函数
可以将方法都封装在一个类中function fetch1() { // TODO } function fetch2() { // TODO } function fetch1() { // TODO }
-
流程判断
let processStatus; // 存放流程状态 if (params.a === "a" || params.b === "b") { processStatus = STATUS.process_1; } else if (params.a !== "a" && params.c === "c") { processStatus = STATUS.process_2; } else if (params /*.....*/) { // TODO } else { processStatus = STATUS.process_err; } // 根据流程执行对应的方法 switch (processStatus) { case STATUS.process_1: case STATUS.process_2: fetch1(); break; case STATUS.process_3: fetch2(); break; case STATUS.process_4: fetch3(); break; default: // TODO break; }
通过状态机来对流程进行控制,即使后期流程改变或新增,我们只需要改动对应流程的相关代码,而且我们完全可以不用担心改动之外的流程
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。