今天读了一个关于怎样避免使用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 不存在的话。
评论
发表评论