如何解决Javascript (Node.js) - 重构一个长函数
创建模块“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,pushNotificationsTokens
) {
part1();
part2();
part3();
function part1() {
// 6 lines
}
function part2() {
// 10 lines
}
function part3() {
// 20 lines
}
}
module.exports(Notifications);
这里,我想到了另一个问题:
即使它们只有静态方法,在独立模块中创建类也是一种代码风格吗? 我见过一些 GitHub 存储库,不同的开发人员在其中执行此操作。但为什么?这种方式是否与 DDD 之类的编程方法有关?做上面的代码和这段代码有区别吗?
notifications.js
exports.sendPushNotification = async function (
title,pushNotificationsTokens
) {
part1();
part2();
part3();
function part1() {
// 6 lines
}
function part2() {
// 10 lines
}
function part3() {
// 20 lines
}
}
另外,有没有更好的方法来重构这个函数?例如,一些专业的方法来传递长参数列表、使用较短的名称或类似的东西。
解决方法
是的,保持代码重构是一个好习惯。我经常使用 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
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。