前置き
これから説明していくコードの書き方を知ってはいましたが、名前がついていることを知りませんでした。
あらためて知ったことを記録として残しておきたい為、参考になれば嬉しいです。
ルックアップテーブルの使い方
・ルックアップテーブルとは
計算機科学におけるルックアップテーブル(英: Lookup table)とは、複雑な計算処理を単純な配列の参照処理で置き換えて効率化を図るために作られた、配列や連想配列などのデータ構造のことをいう。
Wikipediaより引用
言葉だけだと分かりにくいと思うので、例を見ながらどんなときにどのように書くことを言うのか見ていきましょう。
下記はお金「円」の値によって取得する「果物」が変わる処理を書いています。
if ($yen === '100円') {
$fruit = 'オレンジ';
} else if ($yen === '110円') {
$fruit = 'りんご';
} else if ($yen === '120円') {
$fruit = 'ぶどう';
} else if ($yen === '130円') {
$fruit = 'スイカ';
}
ifが数個続いて使われています。
この程度のelse ifの量であればまだ読みやすいですが、これが7、8つと続くと気になりますね。
switch ($yen) {
case '100円':
$fruit = 'オレンジ';
break;
case '110円':
$fruit = 'りんご';
break;
case '120円':
$fruit = 'ぶどう';
break;
case '130円':
$fruit = 'スイカ';
break;
}
else ifをなくし、switch文を使用しました。
先ほどよりは見やすくなりましたが、文字量が多いところが気になりますね。
$fruit = [
'100円' => 'オレンジ',
'110円' => 'りんご',
'120円' => 'ぶどう',
'130円' => 'スイカ',
][$yen];
上記のif文とswitch文より遥かに行数、文字数を短縮できました。
$fruitの期待値としては、上記の$fruitと同じ値になるはずです。
配列に前もって欲しい値を用意しておき、$yenの中身によって取り出す値を変えることができます。
これをルックアップテーブルと言います。
まとめ
時と場合によって「使用できる・できない」はありますが、頭の片隅に入れておくだけで行数や文字数を大幅に減らすことができます。名前を知らなかった、そもそもこの書き方を知らなかったという方の参考になればと思います。
参考文献
ルックアップテーブル - Wikipedia
https://ja.wikipedia.org/wiki/%E3%83%AB%E3%83%83%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB
Laravelでよりクリーンなコードを書く
https://www.gigas-jp.com/appnews/archives/11954