Day3の企業ブースにあった (A) と (B)、どっちが好みか?という問いを考案しました。
個人的な考えでは
- Kotlinに慣れていない人でもわかりやすいのは(A)
- いかにもKotlinぽいのは(B)
- xがvar変数でスマートキャストが効かない時は(B)にするか、(A)だと一時変数を定義するしかない
-
hoge()
がnullを返す場合は(A)と(B)で結果が変わってくる - (A)だと二者択一という意図、(B)だと
run { }
がフォールバック的な意図が感じられる
という感じで迷います。
単純そうに見えて議論を深められるポイントがいくつかあり話題作りになればいいなと思っていました。
普段実装していて自分自身悩むことが多いので、単純にどっちの方が人気のある書き方なんだろう?という興味もありましたね。
(A)
return if (x != null) hoge(x) else {
fuga()
fuga2()
}
(B)
return x?.let { hoge(x) } ?: run {
fuga()
fuga2()
}
(昼過ぎくらいに見に行った時には半々くらいでしたね。投票してくださった方、ありがとうございました。)