我如何重构此代码以删除重复项?
How can I refactor this code to remove duplication?
为了 DRY(不要重复自己)代码,我想知道下面给出的代码是否可以以任何方式重构。在下面的代码中,如您所见,我重复了 condition1
和 condition2
的赋值语句,因为在每个 if 语句的末尾我进行了不同的函数调用。
websocket.onmessage = async(event) => {
const data = JSON.parse(data)
let infoFromExternalApi1, infoFromExternalApi2, infoFromExternalApi3
// Assignments for infoFromExternalApi variables are repeated due to difference in function calls doSomething() and doSomethingElse()
if (condition1) {
infoFromExternalApi1 = await getInfoFromExternalApi1()
infoFromExternalApi2 = await getInfoFromExternalApi2()
infoFromExternalApi3 = await getInfoFromExternalApi3()
doSomething()
}
if (condition2) {
infoFromExternalApi1 = await getInfoFromExternalApi1()
infoFromExternalApi2 = await getInfoFromExternalApi2()
infoFromExternalApi3 = await getInfoFromExternalApi3()
doSomethingElse()
}
}
您可能正在寻找
websocket.onmessage = async(event) => {
const data = JSON.parse(data)
let infoFromExternalApi1, infoFromExternalApi2, infoFromExternalApi3
if (condition1 || condition2) {
infoFromExternalApi1 = await getInfoFromExternalApi1()
infoFromExternalApi2 = await getInfoFromExternalApi2()
infoFromExternalApi3 = await getInfoFromExternalApi3()
}
if (condition1) {
doSomething()
}
if (condition2) {
doSomethingElse()
}
}
当然,如果两个条件都为真,这与您的原始代码的工作方式不同,即仅从外部 api 获取信息一次。
为了 DRY(不要重复自己)代码,我想知道下面给出的代码是否可以以任何方式重构。在下面的代码中,如您所见,我重复了 condition1
和 condition2
的赋值语句,因为在每个 if 语句的末尾我进行了不同的函数调用。
websocket.onmessage = async(event) => {
const data = JSON.parse(data)
let infoFromExternalApi1, infoFromExternalApi2, infoFromExternalApi3
// Assignments for infoFromExternalApi variables are repeated due to difference in function calls doSomething() and doSomethingElse()
if (condition1) {
infoFromExternalApi1 = await getInfoFromExternalApi1()
infoFromExternalApi2 = await getInfoFromExternalApi2()
infoFromExternalApi3 = await getInfoFromExternalApi3()
doSomething()
}
if (condition2) {
infoFromExternalApi1 = await getInfoFromExternalApi1()
infoFromExternalApi2 = await getInfoFromExternalApi2()
infoFromExternalApi3 = await getInfoFromExternalApi3()
doSomethingElse()
}
}
您可能正在寻找
websocket.onmessage = async(event) => {
const data = JSON.parse(data)
let infoFromExternalApi1, infoFromExternalApi2, infoFromExternalApi3
if (condition1 || condition2) {
infoFromExternalApi1 = await getInfoFromExternalApi1()
infoFromExternalApi2 = await getInfoFromExternalApi2()
infoFromExternalApi3 = await getInfoFromExternalApi3()
}
if (condition1) {
doSomething()
}
if (condition2) {
doSomethingElse()
}
}
当然,如果两个条件都为真,这与您的原始代码的工作方式不同,即仅从外部 api 获取信息一次。