以下是一个有多层嵌套的if...else...语句的示例程序片段,这样子的写法感觉可读性非常不好,请问如何重构可使程序逻辑变得更为清晰易读?if($age > '18') {
  // do something ...  if($gender == 'male') {
    // do something ...    if($name == 'SparkLee') {
      // do something ...
    } else {
      // do something ...
    }
  }
} else {
  // do something ...  if($country == 'china') {
    // do something ...    if($favourite == 'basketball') {
      // do something ...
    }
  } else {
    // do something ...
  }
}

解决方案 »

  1.   

    这要看你 do something ... 的具体内容了
      

  2.   

    这要看你 do something ... 的具体内容了
      

  3.   

    用switch
      

  4.   

    嵌套多使用switch比if..else..效率高很多的。
    因为switch是用空间换时间。
      

  5.   

    switch 的代码比这么多的if 好看点。
      

  6.   

    各段if里的内容一般都是类似的逻辑。
    比如
    如果是兔子
    喂他个胡萝卜
    如果是只汪
    喂他个肉包子这样就可以用反射或工厂方法:
    AnimalFactory::get($animalName)->feed();
    一句搞定。具体是喂胡萝卜还是肉包子,放到兔子和汪的类里去处理。反射的方式也类似。可以看看设计模式,这种多态的思想很有帮助。
      

  7.   

    如果你纯粹只是想格式简单 可以使用三元运算 这样形成的代码 感觉就简洁了一些,如果是if 条件过多 可以使用 switch 语句
      

  8.   

    超过3个以上,可以考虑使用switch