Open OPY-bbt opened 5 years ago
如果有一个sort函数,数据源是对象, 第一感觉应该是这样:
function sort(obj) { return Object.keys(obj).map(...).sort(...) }
这当然是没有问题的。但是,如果以后需要复用sort函数 ,但是数据源是数组,为了复用这个函数,就需要:
const obj = array.reduce(() => {}); sort(obj);
这样看起来很完美,天有不测风云,数据源为对象的情况消失了,或者不需要sort了,那么这时候你再来看情况二的代码,是不是多余了。先将数据转成对象又转成数组。 这样单独拿出来看会觉得问题很明显,但是当在做业务的时候,可能会想不到这个。 所以这里解决方法是:
function obj2arr(obj) { return Object.keys(obj).map(); } function sort(arr) { return arr.sort(); }
这样保持函数的单一原则,增加函数复用性,减少维护成本。这个道理本来就知道,亲身经历过感触会深一些。
context
情况一
如果有一个sort函数,数据源是对象, 第一感觉应该是这样:
情况二
这当然是没有问题的。但是,如果以后需要复用sort函数 ,但是数据源是数组,为了复用这个函数,就需要:
情况三
这样看起来很完美,天有不测风云,数据源为对象的情况消失了,或者不需要sort了,那么这时候你再来看情况二的代码,是不是多余了。先将数据转成对象又转成数组。 这样单独拿出来看会觉得问题很明显,但是当在做业务的时候,可能会想不到这个。 所以这里解决方法是:
这样保持函数的单一原则,增加函数复用性,减少维护成本。这个道理本来就知道,亲身经历过感触会深一些。