项目重构
Image/Model
注意对其修改时不要落下任何用到该Image/Model的 node。
Tip
善用全局搜索
Pipeline
Sub Node
这里将 is_sub (已废弃) 值为 true 的 node 称为 sub node 。
重构 sub node ,有以下几个步骤:
- 判断该
sub node在 当前nodenext列表中是否处于最低优先级(即直接放到 当前nodeinterrupt列表中对实际效果有无影响) - 若该
sub node不处于最低优先级,重构方法是将 当前node 的next和interrupt加入sub node(原next和interrupt为空可直接进行,不为空则需考虑是否冲突);若该sub node处于最低优先级,重构方法为直接放到 当前node 的interrupt中 - 若该
sub node不处于最低优先级,且步骤2的改动会引起冲突,则需要重新考虑任务逻辑 - 将
sub node的is_sub属性删除
Warning
以上全部改动均需考虑所有使用该 sub node 的 node,不要落下!
这里举一个例子,假设当前为重构前节点如下:
"Start": {
"next": [ "Sub_A", "B", "Sub_C", "D" ]
// 这里假设 Sub_A 可以放到最后判断,Sub_C 需在 B 之后、D 之前
}
这时可以改成下面的形式:
"Start": {
"next": [ "B", "C", "D" ],
"interrupt": [ "A" ]
},
"A": {
"next": A.nextlist // A 节点原本的 next 列表
},
"B": {
"next": B.nextlist
},
"C": {
"next": [ "B", "C", "D" ] + C.nextlist, // Start 节点的 next 列表和 C 节点原本的列表合并,注意顺序等问题
"interrupt": [ "A" ]
},
"D": {
"next": D.nextlist
}
其它 node
接下来按照其它 node 的重构目的来分别说明如何重构。
规范 node 名称
如果只是想规范 node 名称,则只需通过 vscode 的全局搜索、替换功能完成即可。
不过需要注意替换时带着双引号替换,以免出现包含该 node 名的其它 node 也被修改。
简化任务流程、减少耦合
先行阅读 Node 连接,向贴合连接原则的方向进行重构。
部分node 可放在 当前node 的 祖先node 的 interrupt 中。
注意移动后将不必要的 next node 删除,避免在 interrupt 中继续执行主任务链,导致后续任务报错后跳回 祖先node。
合并相同功能 node
如果有多个 node 都实现了相同的功能,则可以考虑合并为一个 node。
步骤为:
- 合并前检查该 node
next中是否不相关的 node,如有则先将其拆分出来。 - 合并时所有 node 改用相同规范名称。
- 合并后检查该 node 在所有任务中的位置是否正确。如本该在
interrupt中的 node 是否位于任务链主干的next部分。