◆ if 文に合わせた感じに

ここ数年は

a
? b
? c
: d
: e
? f
: g

という書き方でした
? と : が揃ってきれいですし a の結果で次のインデントの ? b か : e のどっちかを見れば良いとインデントで判断できて見やすいです

ただそれもこれくらいシンプルな場合なんですよね
複雑で b や c などの部分が複数行になると 見やすさも変わってきます

最近思ったのは b の行を見たときに b の値そのものがほしいのか b が true なのか false なのかを知りたいのかがわかりません
一旦先に次の行を見ないといけないのはどうかなと思うところです
if 文なら if という文字があるので先に知ることができて見やすいのですよね
いつもながら if 式ができてくれれば助かるのに


その行だけでわかるように ? を次の行じゃなくてその行に書く方法も考えたことはありますが then の行と else の行で見ためが違うのがあまり好きになれません

a ?
b ?
c :
d
e ?
f :
g

見た目に限らず c のところにさらに分岐をつけるときに : を消して ? に置き換えて……というわかりづらい書き換えになります


良い書き方はないかなと色々試してると 行数が増えるデメリットがあるもののハイブリッドにして ? と : は揃えないほうが if っぽくてありな気がしました
else だけに行を使ってるという意味では if 文と変わりませんし

a ?
b ?
c
:
d
:
e ?
f
:
g

if 文なら

if (a) {
if (b) {
return c
} else {
return d
}
} else {
if (e) {
return f
} else {
return g
}
}

この書き方なら else if を続ける場合も見やすく書けます

size < 10 ?
10
: size < 50 ?
50
: size < 100 ?
100
:
200

これまでの ? と : を揃えるものだと ネストが深くなっていきます

size < 10
? 10
: size < 50
? 50
: size < 100
? 100
: 200

その場合だけ : をインデントしないこともできますが if のネストか else if を続けるかでインデントルールが変わるのも違う気がするので ? と : の位置は分けたほうが良さそうです

これまでの方法で : をインデントしない書き方だとこうなります

size < 10
? 10
: size < 50
? 50
: size < 100
? 100
: 200

新しい書き方でも行の最後の ? を見ないと そのものの値か boolean 値のどっちとして見ればいいのかがわからないので複数行になったときのわかりづらさはあまり変わってないのですけどね