現在、サーバエンジニアとしてPHPを触っている。僕ともう一人経験豊富なエンジニアがいた、彼と僕とではやはりコードの読みやすさが違う。その中の特徴の一つが条件分岐のやり方だ。
If文での条件分岐
例えば、値の中身に応じて処理を分けて、途中で値を返したりする場合はif文を使うだろう。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php $value = rand(0,2); $words = ['apple','orange', 'banana']; if($words[$value] === 'apple'){ return 'APPLE'; } else if($words[$value] === 'orange'){ return 'ORANGE'; } else { return 'BANANA'; } |
だけど、この記述は僕なりに2つの問題点がある。
ひとつ目は単純に見づらい。条件分岐をしている行(ifやelse if, elseの部分)の長さがマチマチなのでデザイン的に受け付けられない。
ふたつ目はもし、$wordsに新しい値を追加して、条件分岐を変更したい場合に最後のelseのところを"else if($words[$value] === 'banana')"みたいに変更しないといけない。これは面倒だ。
現場でも、僕はたまにこうした楽観的なコードを書く癖があるので、後から見直すと「オェーwww」みたいな感じになる。
Switch文
ちなみに、経験豊富な彼はこう書くだろう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<?php $value = rand(0,2); $words = ['apple','orange', 'banana']; $fruit = $words[$value]; switch($fruit){ case: 'apple' return 'APPLE'; break; case: 'orange' return 'ORANGE'; break; case: 'banana' return 'BANANA'; break; default: break; } |
どこかで良いコードとは横に長いのではなく、縦に長いコードだと聞いた気がする。
単純な値の比較であれば、switch文の方がコードが読みやすい。
見やすいだけではなく、新しい条件も設定しやすい。