if文のリファクタリング (クリーンコード Ruby on Rails)

if文についてプルリクエストのレビューで”こう書くともっと見やすいですよ”とコメントをいただいたことがあったので、ここにメモとして記載をしておく。こちらの記事に辿り着いた方にもすこしでも参考になれば幸いです。超初心者向けになると思います。

目次

実際のソースコード

レビューを受ける前のソースコード

if params[:country_id]
  @users = User.with_country(@country).order(id: :desc).page(params[:page]).per(100)
else
  @users = User.order(id: :desc).page(params[:page]).per(100)
end

このソースコードで表現したいこととしては、以下の通りです。

  • country_idを受けとった時はUserが所属している国で絞り込んだ状態で表示する。
  • それ以外は、国で絞り込まずすべてのUserを表示する。

レビューを受けた後のソースコード

scoped = User.order(id: :desc).page(params[:page]).per(100)
scoped = scoped.with_country(@country) if params[:country_id]
@users = scoped

レビューを受ける前は5行のコードとなっていたが、レビューいただいた内容をもとに修正を行った後は3行のコードで表現することができた。

if文の書き方は色々な書き方があるので、単純にif elseのように記述をしなくても表現したい仕様を満たすコードを書くことは充分可能です。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

東京のIT企業に所属しながらフルリモートで働く現役Webエンジニア。体育会出身で営業職からプログラミングを学び始め、2020年秋に未経験ながらエンジニアとして転職。Jリーグ下部組織出身/水戸商業サッカー部OB/欧州でのトライアウト経験あり

コメント

コメントする

CAPTCHA


目次