OPY-bbt / OPY-bbt.github.io

my webpage
https://opy-bbt.github.io/
0 stars 0 forks source link

函数功能尽量单一 #7

Open OPY-bbt opened 5 years ago

OPY-bbt commented 5 years ago

context

情况一

如果有一个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();
}

这样保持函数的单一原则,增加函数复用性,减少维护成本。这个道理本来就知道,亲身经历过感触会深一些。