猿问

萌新求教!关于多个if else如何优化代码质量,效率更高,有什么好的建议?

一段代码中,有很多的ifelse怎么去优化这个代码varsayHello=function(personal){if(personalinstanceofLi){console.log('嘿,你好');}elseif(personalinstanceofDan){console.log('吃早饭了么');}elseif(personalinstanceofArthur){console.log('你今天看起来真漂亮')}};varLi=function(){};varDan=function(){};varArthur=function(){};sayHello(newLi());//嘿,你好sayHello(newDan());//吃早饭了么sayHello(newArthur());//你今天看起来真漂亮
白猪掌柜的
浏览 446回答 2
2回答

慕仙森

是否有好的方法优化?如何重构?方法肯定是有的。重构if-else时,心中无时无刻把握一个原则:尽可能地维持正常流程代码在最外层。意思是说,可以写if-else语句时一定要尽量保持主干代码是正常流程,避免嵌套过深。实现的手段有:减少嵌套、移除临时变量、条件取反判断、合并条件表达式等。下面举几个实例来讲解这些重构方法:异常逻辑处理型重构方法实例一:重构前:double disablityAmount(){    if(_seniority < 2)         return 0;     if(_monthsDisabled > 12)        return 0;     if(_isPartTime)        return 0;     //do somethig }重构后:double disablityAmount(){    if(_seniority < 2 || _monthsDisabled > 12 || _isPartTime)         return 0;     //do somethig}这里的重构手法叫合并条件表达式:如果有一系列条件测试都得到相同结果,将这些结果测试合并为一个条件表达式。这个重构手法简单易懂,带来的效果也非常明显,能有效地较少if语句,减少代码量逻辑上也更加易懂。异常逻辑处理型重构方法实例二:重构前:double getPayAmount(){    double result;    if(_isDead) {        result = deadAmount();    }else{        if(_isSeparated){            result = separatedAmount();        }        else{            if(_isRetired){                result = retiredAmount();            else{                result = normalPayAmount();            }        }    }    return result;重构后:double getPayAmount(){    if(_isDead)         return deadAmount();     if(_isSeparated)        return separatedAmount();     if(_isRetired)        return retiredAmount();     return normalPayAmount();}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答