设备有上千个参数,修改某一个参数时,与它有关的其它几百个参数会限制它的范围,怎么设计代码能使工作量比较少,不用每一个都去写逻辑判断
建议增加一个关系表维护某个参数和这几百个参数限制的关系,然后代码逻辑只需要根据关系表确定如何限制,如果涉及到后面新增限制参数,可以直接维护关系表即可。
将所有参数放在Excel中
函数组合(compose)——如果一个函数要经过多个函数处理才能得到最终值,这个时候就可以把中间过程的函数合并成一个函数。
对于单独的函数来说,它就像是一个个的管道,每个数据经过一节管道被处理后就得到了最终的结果。
需要注意的是,与 reduce()
中的案例,即 从左往右 执行不一样,函数组合的默认是 从右往左 执行的。
以下是一个基本引用的演示:
// compose 演示
function compose(f, g) {
return function (val) {
// 此刻依旧是洋葱代码
return f(g(val));
};
}
// 新建两个管道函数
function reverse(arr) {
return arr.reverse();
}
function first(arr) {
return arr[0];
}
// 顺序要求是:先执行 reverse,再执行 first
// 这样才能获得 last——翻转后数组中第一个元素,就是原数组最后一个元素
const last = compose(first, reverse);
console.log(last([1, 2, 3, 4, 5])); // 5
这个时候的确会觉得很麻烦,如果只是想要获得数组中最后一个元素,那么直接用 arr[arr.length - 1]
比写这么多组合要方便很多。
但是这里只是一个基础的案例,更加复杂的应用可以想象一下要对用户的数据进行过滤、处理、清洗。有些业务需求的顺序可能是药先过滤再处理,也有一些可能要先处理,再过滤。如果依旧针对功能单独写函数的话,势必会造成代码的冗余以及增加后期维护的困难。
刨除其他的处理逻辑,先写好过滤和处理的函数,最后根据需求重新组合,代码能够干净很多,开发和维护的效率都可以进一步的提升。