[JavaScript--代碼98]:JS代碼重構

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);
        });
}
發佈了57 篇原創文章 · 獲贊 19 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章