如何提高JS函数代码的复用率?

我举个小例子吧

function fun(){
    console.log(1);
    console.log(2);
    console.log(3);
}
function fun1(){
    console.log(1);
    // 这行不要
    // console.log(2);
    console.log(3);
}
fun();
fun1()

上面代码中,第一次函数执行是fun里面的所有语句,而第二次执行的时候重新调用了fun1函数,而区别仅仅是一条语句没有输出而已。
我想问的是,如果是大段代码,需要调用封装好的函数的时候,最终执行的结果只需要其中的一部分怎么办?难道一定要把整个函数都重写一个新的函数吗?

阅读 6.4k
6 个回答

所以写函数的时候要尽量做成一个尽量小的个体,这样容易被复用,可读性也强

比如这样,下面的只是一个例子,毕竟不可能为了一条语句写一个函数的,主要说明的还是写函数的一个思想

function a() {
    console.log(1);
}

function b() {
    console.log(2);
}

function c() {
    console.log(3);
}

function fun() {
    a();
    b();
    c();
}

function fun1() {
    a();
    b();
}

不要一味追求复用,复用其实从另一方面说提升了藕合性,随着项目的迭代,前期看似高大上的复用,后期就是噩梦一样。
如一楼说的,想要复用,就要缩小方法的体积,功能单一,尽量不要在其中加判断逻辑。经验来说,一个函数的判断类型参数不要超过2个。
从项目的整理来估算下函数可能会被用到多少次,功能的相似度能达到多少,如果差别有些大,那就写新的函数。
复用太多,后期需求变更或者补充的时候,牵一发动全身的感觉非常不好。可能只是加了个简单的判断,都需要检查几十处代码,甚至更多。所以如果经验不足,那就不复用或少复用,避免开发进行不下去。

这个是真的没办法。如果别人写的一个父类里面有一个方法,你想用这个方法,但是其中有一行你不想要,你只能重写。

要看你如何抽离公用的代码,还有一点建议就是尽量写纯函数

学一下函数式编程吧。

可以通过传参改变,根据参数的不同,执行不同的结果

function fun(status) {
    if(status) {
        console.log(1);
        console.log(3)
    } else {
        console.log(1);
        console.log(2);
        console.log(3);
    }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题