Javascript重构通常称为函数

Javascript refactor oftenly called function

本文关键字:函数 重构 Javascript      更新时间:2023-09-26

我使用javascript已经有很长一段时间了,但是我经常想到以下代码:

function1 () {
  // do stuff
  ...
  end_function();
}
function2 () {
  // do stuff
  ...
  end_function();
}
function3 () {
  // do stuff
  ...
  end_function();
}

我知道这与 DRY 原则相冲突,但不幸的是,我不知道如何处理它来消除重复。有谁知道答案?

有很多解决方案。

一种方法是包装功能,如"我不是我"的答案,

另一种是使用高阶函数。

var end_function = function(callback){
    callback.call();
    // do some stuff 
};
var stuff1 = function(){};
var stuff2 = function(){}:
end_function(stuff1);
end_function(stuff2);
如果将

end_function直接编码到其他函数中,它将与 DRY 发生冲突。最终,您确实需要一些语法来调用您抽象到其自己的函数中的代码。

如果函数组合到一个 Object 中,我想你可以枚举对象的属性,并包装每个函数,但这可能只值得你拥有许多这样的函数。

var funcs = {
    function1 () {
      // do stuff
    },
    function2 () {
      // do stuff
    },
    function3 () {
      // do stuff
    }
};

Object.keys(funcs).forEach(function(key) {
    var orig = funcs[key];
    funcs[key] = function() {
        orig.apply(this, arguments);
        end_function();
    };
});