Brakeの無いswitch case文の意味

switch caseは評判が悪いらしいです

なんか可読性が悪くなるとかで使わないでよってどっかで言われた覚えがあります。

あんまり評判が良く無いですよね。

だからまあ私も使わないようにはしてるんですけど時間がないなあなんて時とか、ここはスイッチの方が良くないかな?と思った時(どんな時だっけなあ)はたまに使うって感じです。

初めてのswitch

自分は子供の頃はBASICで遊んでいたのですが学校ではマシン語から習ったので後にswitch case文を見た時には「ああアセンブラとかマシン語でやるあれか」と思いました。

だからこういうコーディングを考えたのですごく自然に。

$userPermission = 1;
switch ($userType) {
  case 10:
    $userPermission += 1000;
  case 1:
    $userPermission += 100;
    break; // 避けることのできない社会的慣習による(ビッグバンセオリー風味)
}

本当にこういうコードを書いたって言うんじゃなく、こんなふうに書いたって言うのかな。

まあ要するにbrakeしないコーディングにしたんですわ。

だってしなくていい時はしなくていいじゃん?

偶然動いてると言われた

したらバグだと思った人がこれ指摘してきたんですよね。

事情説明したんだけど偶然動いてるのかと思ったと言われたわけです。

なんのことかさっぱりその時は理解できなかったんですがつまり

  • スイッチ文を間違えて書いてると思った
  • しかし結果は正しく出ている
  • 間違えてるのに結果だけ正しい(だったら前提が間違ってるのかもしれない・・・とは考えてくれなかった?)
  • これはきっと偶然に違いない

って事なんじゃないかと今は思います。

正しいかは知りませんけど。

実例が存在することに気付いた

理解してもらえないコード書いてもダメだろうなあって言うのと、そもそもbreak有りだったとしてもスイッチ文って可読性悪いから使わないでって後に他の人に言われたこともありこのことをずーっと忘れていたのですが。

おもしれーことに同じことしてる人がいました。

case ‘comment’:
$matchcount = preg_match_all(‘/[()”]/’, $str, $matches);
//fallthrough
case ‘text’:
default:
$matchcount += preg_match_all(‘/[\000-\010\013\014\016-\037\177-\377]/’, $str, $matches);
break;

ほらほらほらー(なにが?)

このコードはPHPMailer.php(6.8.1)というありがたいソースコードに含まれています。

こう言うみんなも使うようなとってもとっても大事なコードでもこう言うコーディングしてるんですよ。

ほらほらー(何が?2)

ね?(だから何が?3)