hotoolong's blog

プログラムのことやエンジニアリングに関することを記事にしています。

大小比較でどちらかの値と取りたい場合のコーディングパターン

Ruby(Rails)で大小比較してどちらかの値と取りたい場合にどうやって書くのか
という素朴な疑問なのですが、
最近私の中でのトレンドがありまして、
比較しながら検証していきたいと思うのです。

前提条件

例えば、日付型の2変数が用意されていて、小さい値をvalにセットしたいとします。

a = Date.today
b = Date.today - 1.day

コードパターン

if文を使う

これはデフォルトスタンダードなやり方ですね。

if a < b
  val = a
else
  val = b
end
ifを使う

これはあまり使わないかな。
一旦初期値を設定して条件によって切り替えるときに使う感じですかね。

val = b
val = a if a < b
三項演算子を使う

これもよく使うやり方。ただ、ちょっと横長になってしまう。
三項演算子自体あまり好きでない人もいる。

val = (a < b) ? a : b
配列を使う

最近このエレガントさにハマってます。
Rubyだから標準的にできるのですが、
見た目もかなり見やすくてコードもスマートでいいです。

val = [a, b].min