[JavaScript--代码98]:JS代码重构

本文通过具体示例展示了如何将复杂的 if-else 代码块重构为更简洁的形式,并介绍了一个初始化流程的改进方法,使得代码更加清晰易读。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1: if-else refactor

var instance;

function getFmService() {
    if (instance !== undefined) {
        return instance;
    } else {
        instance = createFmService();
        return instance;
    }
}

// => refactor
function getFmService(instance) {
    return instance !== undefined ? instance : createFmService();
}
var faults;
var EFaultIds = {};
function init() {
    if (_.isEmpty(faults)) {
        var product = determineProduct();
        if (product === "unknown") {
            // init later!
            logger.info("could not determine product for faults yet..");

            if (secondInitTriggerDefault !== true) {
                secondInitTriggerDefault = true;
                return Promise.resolve();
            } else {
                logger.info("still couldn't determine, defaulting to 5G");
                product = "5G";
            }
        }

        logger.info("initialized faults from %s", product + "_faults.json");
        faults = require("./" + product + "_faults.json");
    }

    if (!_.isEmpty(EFaultIds)) {
        return Promise.resolve();
    } else {
        return Promise.try(function() {
            _.each(faults, function(fault, id) {
                EFaultIds[fault.shortName] = id;
            });
        });
    }
}


// => refactor
function init() {
    var faults = {};
    var EFaultIds = {};
    var product = determineProduct();
    if (product === "unknown") {
         // init later!
          logger.info("could not determine product for faults yet..");

          if (secondInitTriggerDefault !== true) {
              secondInitTriggerDefault = true;
              return Promise.resolve({faults, EFaultIds});
          } else {
              logger.info("still couldn't determine, defaulting to 5G");
              product = "5G";
          }
      }

    logger.info("initialized faults from %s", product + "_faults.json");
    faults = require("./" + product + "_faults.json");

    if (_.isEmpty(EFaultIds)) {
        return Promise.try(function() {
            _.each(faults, function(fault, id) {
                EFaultIds[fault.shortName] = id;
            });
        });
    }
    return Promise.resolve({faults, EFaultIds});
}

//然后就可以这样使用了
function getEFaultIds() {
    return init()
        .then(function({fault, EFaultIds}) {
            return Promise.resolve(EFaultIds);
        });
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木瓜~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值