三項演算子って嫌われる風潮がありませんか?
なんか特に理由もなく三項演算子は醜い、読みづらい→悪!的な・・・

個人的には使いどころ次第だと思うんですよね。
三項演算子NG!と言ってる人はたぶんこういうのを気にしてるんですよね
int number = (high > low) ? highNumber : (middle > low) ? middleNumber : lowNumber;
三項演算子がひたすらつながっているようなもの

確かに三項演算子はつなげたら読みにくいので、良くないと思います。
でも繋げないときはむしろいいことのほうが多いので、個人的には(繋げないという条件付きで)三項演算子は使うのを推奨します。
例えば、初期化するときに
int number = 10;
if (condition) {
    number = 20;
}
int number;
if (condition) {
    number = 20;
} else {
    number = 10;
}
より
int number = (condition) ? 20 : 10;
のほうが良いと思いませんか?
だって、最初のは一度10を入れてるけど、条件によっては20がその後で代入されてて、それって初期化なの?初期化って最初に入れる値が一意に定まってるべきじゃない?って感じですし、2つ目のは初期化するのに5行も使うの????って感じじゃないですか。
まだ、上のは一つしかないから耐えられるかもしれないですけど、2つ以上初期化したかったらどうするんですか?
int number = 10;
if (condition) {
    number = 20;
}
int number2 = 20;
if (condition2) {
    number2 = 30;
}
int number3 = 30;
if (condition3) {
    number3 = 40;
}
...
みたいに書くんですか???初期化に10行も20行も費やして良いんですか???number5を見る頃にはnumberがいくつに初期化されてるかなんて忘れてます…
そう考えると、三項演算子で
int number = (condition) ? 20 : 10;
int number2 = (condition2) ? 30 : 20;
int number3 = (condition3) ? 40 : 30;
の方が絶対いいですよね。初期化の行数も変数の数分だし。

あと最近みたんですが、こういうのも良くないと思うので書き直すべきです。
if (condition) {
    functionA(argument1)
} else {
    functionA(argument2)
}
...
を、
functionA((condition) ? argument1 : argument2)
...
のように。
これはただ短くなるからという話ではありません。
functionAは共通して適用したい操作なのにもかかわらず、条件分岐されて、二箇所に書かれているというところがポイントです。
つまり、conditionで分かれているのは引数だけなのに、functionAを適用するという操作まで、条件に入ってしまっているところが問題です。
共通だからくくりだすとはよく言われることなんですが、そもそも、何が条件によって分かれているの?っていうのを考えたらfunctionAは一箇所にしか現れないはずなんですよね。
まぁ、これは三項演算子とは少し違う話ですが。

とりあえず、このブログは三項演算子は結構いけてると思っています