三項演算子の便利さに気づいたのでシェアします。
三項演算子とは
そもそも三項演算子とはなにかを説明すると
条件に続いて疑問符 (?)、そして条件が真値であった場合に実行する式、コロン (:) が続き、条件が偽値であった場合に実行する式が最後に来る。といった感じのものです。
正直、if文と似ているので使いどころが難しい部分もありますが有効に使える書き方があるのでご紹介します。
例として波の高さによってサーフィンが可能かどうかを判定するプログラムを作成します。
if文で書いた場合
public class java01 {
public static void main(String[] args) {
String isSurfable = "";
int waveheight = 500;
if(waveheight < 1000) {
isSurfable = "OK";
} else {
isSurfable = "NG";
}
System.out.println(isSurfable);
}
}
よくある条件判定式なので特に違和感なく見れると思います。
ただ、今回のお題である三項演算子を使うとあら不思議。大変見やすくなります。
三項演算子で書いた場合
public class java01 {
public static void main(String[] args) {
String isSurfable = "";
int waveheight = 500;
System.out.println(isSurfable = waveheight < 1000 ? "OK" : "NG");
}
}
このようにコードの量も削減されてわかりやすくスッキリとした印象を受けるかと思います。
有効に活用すればif文より簡潔で分かりやすいコードになる三項演算子ですが、
if文で書いた方がわかりやすい場合もあります。
例として複数の条件分岐をした場合でプログラムを組んでみます。
if文で書いた場合
public static void main(String[] args) {
String surfCondition = "";
int waveheight = 1000;
if (waveheight == 300) {
surfCondition = "small wave";
} else if (waveheight == 500) {
surfCondition = "good wave";
} else if (waveheight == 800) {
surfCondition = "big wave";
} else {
surfCondition = "dangerous wave";
}
System.out.println(surfCondition);
}
三項演算子で書いた場合
public static void main(String[] args) {
String surfCondition = "";
int waveheight = 1000;
System.out.println(
surfCondition =
waveheight == 300 ? "small wave"
: waveheight == 500 ? "good wave"
: waveheight == 800 ? "big wave"
: "dangerous wave");
}
見比べてみると、三項演算子も何をしているかはわかるのですがどちらかというと
if文の方が複数条件の場合は見やすいかなといった印象です。
まとめ
条件次第では三項演算子の方が分かりやすくも分かりづらくもなるので場面に応じて使い分けましょう。
一番大事なのは誰が見ても分かりやすいコードを書くということなので。