小技

【小技】max,min関数を使う

はじめに

業務で書いてるコードのリファクタリングをしているときに気づいたものを紹介しようかなと思います。

 

max,min関数を使う

例えば、yの値をあるxに対して0以上のときはx、0未満のときは0とします。このようなときにプログラミング言語ではどのように記述すればよいでしょうか。

この問いに対して僕は以前までは、日本語から直訳的な考え方で、

y = x > 0 ? x : 0

というように三項演算子を用いて実装していました。しかし、今回の場合は境界が0でわかりやすいですが、三項演算子を使う場合、条件式を踏まえてどちらを採用するか考える時間が必要で、たとえ自分が実装したとしても3日ぶりにコードを見たときにどうだったっけってなっちゃいます。

 

これに対して、すでにタイトルでネタバレしてる感が否めないですが、max関数を利用すると、

y = max(x, 0)

と書き直すことができます。

このように書き換えることによって、スッキリコードが書ける上に直感的にわかりやすいコードになりました。

補足ですが、

0以下のときは0、100以上のときは100それ以外はその値を使う場合もmax,min関数を組み合わせて書くことができます。

この場合は、

y = min(max(0, x), 100)

というように書くことができます。

ここまでくると好き好きかもしれませんが、if文で書くには長くなってしまうし、三項演算子で書くよりはこちらのほうがわかりやすいかなと個人的には思います。

まとめ

ある値以下では一定値、ある値以上ではその値を使いたいときにはmax

ある値以上では一定値、ある値以上ではその値を使いたいときにはmin

を使うとコードがスッキリ書くことが出来ます。