今天读了一个关于怎样避免使用switch的blog,觉得他的想法甚好,虽然本身是基于javascript的,但其实可以用在任何语言上,只要能支持通过变量的值来call function就可以了。
例子如下:
就像他所说的,不仅仅是因为后面的更简单或者更清晰,而且因为他更容易扩展,它把实现和定义分开了,你可以在服务器端加你所有想增加的function,而实现则是统一的。就像我以前做的php的controller 一样,
例子如下:
switch (something) {
case 1:
doX();
break;
case 2:
doY();
break;
case 3:
doN();
break;
// And so on...
}
var cases = {
1: doX,
2: doY,
3: doN
};
if (cases[something]) {
cases[something]();
}
就像他所说的,不仅仅是因为后面的更简单或者更清晰,而且因为他更容易扩展,它把实现和定义分开了,你可以在服务器端加你所有想增加的function,而实现则是统一的。就像我以前做的php的controller 一样,
$functionName=$_GET['action'].'Action'; $controller->$functionName();外面可以加一个catch exception,如果这个action 不存在的话。
评论
发表评论