マジックナンバーを避ける
マジックナンバーとは、コードの中に突然現れる数字のことです。
先ほどの例を見てみましょう。
function is_valid_name_length($name){
return mb_strlen($name) <= 20;
}
ここで現れた、「20」がマジックナンバーです。
この20がコードの中に現れると、
- 何を意味する数字なのか?
- なぜ20なのか?
というのが周辺のコードを読み解くまでわかりません。
また、この20という数字が複数箇所に散らばっている場合
- 名前の最大長を30文字に変更
という更新がある場合に20と書かれている場所を一つ一つ更新していく必要があります。無関係なところでこの20という数値が利用されている場合には、「名前の最大長を表す20かどうか?」を判断してから更新する必要もあります。
このようにマジックナンバーの利用には様々な問題点があるため、定数を用いて意味がわかりやすいようにします。
// messagesテーブルでnomeのサイズを20文字に設定済
define('NAME_LENGTH_MAX', 20);
function is_valid_name_length($name){
return mb_strlen($name) <= NAME_LENGTH_MAX;
}
このように定数化して、さらに定数の意味をコメントで書いておくことで処理内容が明確になります。定数ファイルを分離しておくことで、これらの設定値の変更を定数ファイルの書き換えだけで済ませることも可能になります。
マジックナンバーの定数化は単純でつまらない改善に思えますが、効果は非常に大きいものです。決して難しい作業ではないので、現在のソースコードについてマジックナンバーの定数化にチャレンジしておきましょう。