5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DroidKaigi 2024: if-else と ?.let-run はどちらが好みか?

Posted at

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()
}

(昼過ぎくらいに見に行った時には半々くらいでしたね。投票してくださった方、ありがとうございました。)

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?