[英]Javascript (Node.js) - Refactoring a long function
我有一个 function,它与特定概念“通知”相关联。
创建模块“Notifications.js”后,我编写了以下内容:
function Notifications() {} // No constructor...
Notifications.sendPushNotification = async function (
title,
body,
data,
badge = undefined,
sound = "default",
pushNotificationsTokens
) {
// Part 1 - 6 lines
// Part 2 - 10 lines
// Part 3 - 20 lines
}
module.exports(Notifications);
然后,我还考虑通过以下方式使代码更好:
Notifications.sendPushNotification = async function (
title,
body,
data,
badge = undefined,
sound = "default",
pushNotificationsTokens
) {
part1();
part2();
part3();
function part1() {
// 6 lines
}
function part2() {
// 10 lines
}
function part3() {
// 20 lines
}
}
module.exports(Notifications);
说到这里,我想到了另一个问题:
即使它们只有 static 方法,在独立模块中创建类是否也是一种代码风格? 我见过一些 GitHub 存储库,不同的开发人员在其中执行此操作。 但为什么? 这种方式是否与 DDD 之类的编程方法相关联? 执行上面的代码和这段代码有区别吗?
通知.js
exports.sendPushNotification = async function (
title,
body,
data,
badge = undefined,
sound = "default",
pushNotificationsTokens
) {
part1();
part2();
part3();
function part1() {
// 6 lines
}
function part2() {
// 10 lines
}
function part3() {
// 20 lines
}
}
另外,有没有更好的方法来重构这个 function? 例如,一些专业的方法来传递 arguments 的长列表,使用较短的名称,或类似的东西。
是的,保持代码重构是一个好习惯。 我经常使用 async 模块来处理我的异步函数。 您可以在https://caolan.github.io/async/v3/找到该模块。 如果这些函数不是异步的并且您的函数依赖于变量。 您应该使用以下策略进行重构。 这只是我遵循的一个建议。
exports.sendPushNotification = async function (
title,
body,
data,
badge = undefined,
sound = "default",
pushNotificationsTokens
) {
let var1 = part1(title);
let var2 = part2(body, var1);
let var3 = part3(var1, var2);
// ...do some calculations
}
function part1(title) {
// 6 lines
}
function part2(body, param1) {
// 10 lines
}
function part3(param1, param2) {
// 20 lines
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.