python if else嵌套太多如何优化_if-else嵌套过多时的优化方案

//if-else嵌套过多时的优化方案

在垒代码的时候经常会遇到 if-else 的嵌套判断,就是下一个判断依赖于上一个判断的结果,其基本的表现形式为

if(){//first judge

if(){//second

//do something

}else{

if(){//third

//do something

}else{

//do something

}

}

}else{

//do something

}

当嵌套的个数不是太多的时候,看上去也不是太乱,顺着每个判断写下来也不会太困难,

但是当嵌套个数太多的时候依然依照上面的写法来写的话,就会感觉很吃力、思绪很乱。

所以我想要优化一下代码。

思考的结果如下:

1.函数化

2.将步骤判断和每个步骤要做的事情分开

所以有了两个函数:

function getStep(){//得到步骤,返回为步骤

var step = 0 ;

return step ;

}

function gotoStep(step){}//根据不同步骤来做不同的事情

假如我们有5个判断条件 judgement1,judgement2,judgement3,judgement4,judgement5,

条件相互依赖,即当判断 judgement1之后根据它的判断结果再来判断judgement2

最后根据这五个判断条件的真假来得到步骤

所以完成第一个函数

function getStep(){//得到步骤,返回为步骤

if(judgement1){//如果judgement1为true则进行下一步判断,否则直接返回step

if(judgement2){

if(judgement3){

if(judgement4){

if(judgement5){

return 6;

}else{

return 5;

}

}else{

return 4;

}

}else{

return 3;

}

}else{

return 1;

}

}else{

return 0;

}

}

然后再完成第二个函数

function gotoStep(step){

switch(step){

case 1://doSomething

break;

case 2://doSomething

break;

case 3://doSomething

break;

case 4://doSomething

break;

case 5://doSomething

break;

case 6://doSomething

break;

}

}

如此调用两个函数 gotoStep(getStep()) 即可;

但是第一个函数的只是步骤清晰了起来,看上去还是比较繁琐,在与同时讨论之后,

想到递归调用方法来改写第一个得到step的函数

具体步骤如下

//将判断条件依照先后顺序写进一个数组

var judgement = [

judgement1,

judgement2,

judgement3,

judgement4,

judgement5,

];

var step = 0; //设置第一步

//递归函数

function getStep()

{

if(step==6){ return ;}else{

if (judgement[step]){

step++;

getStep();

}else{

return ;

}

}

}

//执行递归函数之后执行gotoStep();

getStep();

gotoStep(step);

ps:小小见解,希望大神给出更简单的方案

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值