1
1

More than 1 year has passed since last update.

Rubyの条件分岐の使い分けについて

Last updated at Posted at 2022-06-22

条件分岐を実装するシチュエーションがあり、使い分けの定義が曖昧だったのでいろいろ調べてまとめてみました。
基本的な内容です。

条件分岐とは

「〜な時〜な処理をする。」というものです。点数が80点以上であればgreat、60〜80点であればgood、60以下であればbadみたいな感じで結果に応じた処理を行うものです。

if文

if 条件 then 処理 endのような感じで書きます。条件がtrueの時に処理が実装されます。

if score >= 80
  puts "Great"
elsif score >= 60
  puts "Good"
else
  puts "Bad"
end

unless文

unless 条件 then 処理 endのような感じで書きます。条件がfalseの時に処理が実装されます。ifの逆バージョンです。

unless score >= 60
  puts "合格"
else
  puts "不合格"
end

case文

case 評価する式 when 条件 処理 endのような感じで書きます。最初で評価する式を定義して後から条件ごとに処理を実装します。

case score
when 80..100
  puts "Great"
when 60..80
  puts "Good"
else
  puts "Bad"
end

なぜ使い分けるのか

使い分ける理由は「可読性」と「処理速度」です。
二分岐なのか多分岐なのかといった条件のパターンや条件式がandやorで繋ぐ複雑なパターンなのかとなどの評価の仕方によってベストプラクティスは異なります。
※ 実際にベンチマークテストを行ったわけではありません。

ifを使うべきタイミング

  • 条件式が複雑なタイミング
  • 処理が一行だけの場合(後置if)

unlessを使うべきタイミング

  • 条件式が複雑かつ、条件式(ifを使う際)にnotが入る時
  • 処理が一行だけの場合(後置unless)

caseを使うべきタイミング

  • 条件式がシンプルなもの

おまけ

if文の可読性を高めるテクニックとしてガード節があります。これは、「条件に当てはまるものを早期リターンさせることで可読性を高めるテクニック」です。以下の記事が分かりやすく解説しておりますので是非参考にしてみてください。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1