March 31, 2014

Select case / switch caseのバランスの良さ

Visual BasicのSelect case、Javascriptのswitch caseなど、select/switch系の構文について、Web拾い読みメモ。

例えば以下の記事では色々とSelect caseの使い途が紹介されています。
Visual Basic 中学校  / 6.Select Case はもっと使える
http://homepage1.nifty.com/rucio/main/technique/Select.htm

エッセンスとしてはif ~ then ~ else ~ end if / if {} else {}を簡略に表現できる、ということでしょう。
ところが、もっと簡略に表現することもできて、連想配列を使ってもよいようです。
Wiki books / JavaScript JavaScript的プログラミング
http://ja.wikibooks.org/wiki/JavaScript_JavaScript%E7%9A%84%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0

実際には、ifと配列表現のちょうど間に位置するSelect case / switch caseが最も読みやすく理解しやすいのでは。


コードで見てみる

実際にコードで比較してみると以下のようになり、switchは簡略さと可読性をバランスした構文といえます。もっとも、以下の場合でも処理1~3の内容が単に値を返すだけといった場合は、配列を使ったほうがシンプルだし直観的でしょう。
 
逆に、どうしても処理1~3の内容が長くなる場合はifを使ったほうが、処理ブロックの前に必ず条件が提示される構文であるため、可読性が高まるかもしれません。もっとも、ネストされた内部に長い処理が出てくるならば、別のサブルーチンとして追い出すべきかもしれません。


// if~elseの表現
if(n==1) {
    処理1;
} else if(n==2) {
    処理2;
} else if(n==3) {
    処理3;
}

// switch~caseの表現
switch(n){
  case 1:
    処理1;
    break;
  case 2:
    処理2;
    break;
  case 3:
    処理3;
    break;
}

// 配列を用いた表現
obj = [
  function(){ 処理1; },
  function(){ 処理2; },
  function(){ 処理3; }
];
obj[n]();

No comments :

Post a Comment