エンジニアのひよこ_level10

毎日更新してた人。たまに記事書きます。

読みやすいプログラムを書くために。式を一度変数に入れる。【636日目】

私がコードを書いたときに頂いたアドバイス

コードを読みやすくすために式に名前を付けるという意味で変数に入れるのは良い

(正しくは、変数に結果を入れていますが、結果と捉えるより式と捉えるほうがわかりやすいと考え、あえて式と表現します。)

読みにくいコード

if (!($user->where('item', 'x')->isEmpty())) {
    $this->xxxx();
}

まだこのコードは読みやすい方ですが・・・

ぱっと見で何をしているコードがわかるでしょうか。

もし、if文の中身がもっと長かったら目も当てられない・・・

変数に入れることで『名前付けをする』

$has_x_item = !($user->where('item', 'x')->isEmpty());

if ($has_x_item) {
    $this->xxxx();
}

こうすることで、if文の中身がどのような意味を持っているかわかりやすいですね。
以下の文だけを見ても何が起こっているかわかりやすいです。

if ($has_x_item) {
    $this->xxxx();
}

一見、変数に入れる処理が邪魔と思うかもしれません。
無駄と思うかもしれません。

でも、『どんな式か』がわかりやすくなるのは、後の開発者が見たときの開発速度に繋がります。

幸い今の時代はこれくらいの処理を詰めるほどメモリ等がカツカツではないので・・・!

コメントを入れればいいのでは?

// ユーザーがxを持っているか確認して、処理を行う
if (!($user->where('item', 'x')->isEmpty())) {
    $this->xxxx();
}

これも一つの手だと思います。
日本語読めない人にはコード読めなくなりますが・・・

コードの拡張(&&等で条件増やしたり)の度に条件式を拡張していくと、コードがさらに見にくくなるので・・・
そういうときは、一個の意味の単位で変数に入れていくのは良いと思います。