以下是一个有多层嵌套的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 ...
}
}
// 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 ...
}
}
因为switch是用空间换时间。
比如
如果是兔子
喂他个胡萝卜
如果是只汪
喂他个肉包子这样就可以用反射或工厂方法:
AnimalFactory::get($animalName)->feed();
一句搞定。具体是喂胡萝卜还是肉包子,放到兔子和汪的类里去处理。反射的方式也类似。可以看看设计模式,这种多态的思想很有帮助。