三項演算子を使うのはやめるべき?

三項演算子は使いどころ次第で、可読性を大幅に上げることもあれば下げることもある諸刃の剣です。

たまに、「三項演算子は使うべきではない」という意見も見かけますが、私は一概に禁止すべきではなくケースバイケースだと考えています。

 

例えば、このような場合は三項演算子を使うべきではありません。

String ret = (val != null && val.equals("test")) ? hoge2(val) + "ok" : hoge3(val);

この三項演算子は条件も結果も複雑なため、どういう場合にどんな値が変数retに入るのかが一瞬で判別できません。

 

このような処理は、行数が増えてもいいのでif文を使うべきです。

String ret = null;
if (val != null && val.equals("test")) {
    ret = hoge2(val) + "ok";
} else {
    ret = hoge3(val);
}

if文に変えることによって、可読性が随分向上したと思います。

プログラムでは、必ずしも「減らせる行 = 無駄な行」とは限りません。
今回のように、あえて複数行で書いた方が読みやすい場合もあります。

 

一方、以下の2つはどちらが読みやすいでしょうか?

String ret = null;
if (val == null) {
    ret = "";
} else {
    ret = val;
}
String ret = (val == null) ? "" : val;

今度は圧倒的に、三項演算子の方が分かりやすいはずです。

 

どう使い分けるかの基準は書く人のセンス次第ですが、条件や結果が極端にシンプルでif文を書くまでもない場合は三項演算子の方が読みやすいです。

逆に、少しでも複雑になりそうと感じるのなら、三項演算子の使用はやめておいた方がいいかもしれません。

単に行数を減らしたいから、という理由で使うべきものではないと思います。




コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です