如何重用代码并避免重复代码Nodejs



我有以下问题,我有一个函数可以检测消息何时到达,以及消息何时包含前缀"例如";你好,我的意思是"LOL";它只得到";LOL";。它确实工作得很好,但现在我希望它不仅能够检测到"#"前缀,而且还有"$"前缀,例如$MONEY。我想到的第一件事是从字面上复制整个函数,并声明例如prefixD="$&";。问题是我有很多重复/重复的代码,我认为这样做不好,正确的方法是什么?我把我的代码留在这里(这很有效,但它有很多重复的代码(

client.on("message", function consigue(msg) {
const prefix = "#";
if (!msg.content.includes(prefix)) return;
const pattern = new RegExp(prefix + "([a-z]+)", "i");
const getMatch = (str) => str.match(pattern)?.[1];

TRADE_OUT = getMatch(msg.content);
if (TRADE_OUT != "") {
// some here
}
});
client.on("message", function consigueD(msg) {
const prefixD = "$";
if (!msg.content.includes(prefixD)) return;
function escapeRegex(string) {
return string.replace(/[-/\^$*+?.()|[]{}]/g, '\$&');
}
const pattern = new RegExp(escapeRegex(prefixD) + '([a-z]+)', 'i');
const getMatch = (str) => str.match(pattern)?.[1];
TRADE_OUT = getMatch(msg.content);
if (TRADE_OUT != "") {
// The same some here
}
});

例如,我想更换

if (TRADE_OUT != "") {

}

它在两个函数中重复,并且是完全相同的代码,以及它内部的所有内容,就像它对模块中的函数所做的那样,这些函数仅声明为name((;他们已经执行了里面的所有代码,你可以随心所欲地使用它。

在同一功能中执行所有操作的最佳方式是什么?我试过||,还有很多其他方面,但事实上我对这个话题不是很在行

您可以创建一个工厂。

let handlerFactory = flag => {
return msg => {
const prefix = flag
...
}
}

然后你会做

client.on("message", handlerFactory("X"))

其中X是"X"$"或"#&";。

编辑:如果你的意思是";仅TRADE_OUT比特内的部分是重复的";然后将其放入处理程序之前声明的函数中,并从TRADE_OUT比特中调用它。

最新更新