如何重构函数参数及其用法

时间:2019-05-30 16:47:00

标签: javascript ide refactoring

所以我有方法

function titleAndDetail(title, detail, lineHeight, lineLength, x, y, 
tFontSize, dFontSize, document, replacer){
}

我使用了很多次。而且我想出了一些不需要这些参数的方法。

我的目标是这样的功能:

function titleAndDetail(title, detail, lineLength, x, y, 
document){
}

我的问题是:有什么方法可以重构方法并自动删除在调用方法时避免手动执行数百次的这些参数?

我正在使用Visual Studio代码。

1 个答案:

答案 0 :(得分:0)

有两种解决方法。

您可以使它接受很多参数,如果某些参数为null,则将其忽略。因此,您需要创建具有所有可能参数的函数,然后使用它,并将其中一些设置为null。可以在TypeScript's "optional" parameter.

中看到

已建议一种更好的方法是传递一个lambda JS对象。 可以这样做:

// Define it like this
function titleAndDetail(title, detail, lineLength, x, y, 
document) {
  // But instead you can check if title is actually something that defines all of these. Like this:
if(title.title != undefined) {
  passTitle(title.title);
} else {
  passTitle(title);
}

if(title.detail != undefined) {
  passDetail(title.detail);
} else {
  passDetail(detail);
}

}


// How you would use this and it wouldn't hinder the other uses of your function.
titleAndDetail({title: "title", detail:"detail", lineLength:"length", x: 43, y: 432, 
document: "document"});

请记住,您可以传入所有内容作为所有这些值。

希望我有帮助。