avoid using switch

今天读了一个关于怎样避免使用switch的blog,觉得他的想法甚好,虽然本身是基于javascript的,但其实可以用在任何语言上,只要能支持通过变量的值来call function就可以了。
例子如下:

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 不存在的话。

评论

热门帖子