$30 off During Our Annual Pro Sale. View Details »

Kotlinのifを愛でる

 Kotlinのifを愛でる

「明日思わず誰かに伝えたくなる話 フラー x ちゅらデータ合同勉強会」(2022年3月11日)での発表資料です。

okuzawats

March 11, 2022
Tweet

More Decks by okuzawats

Other Decks in Programming

Transcript

  1. Kotlinのifを愛でる
    okuzawats
    明日思わず誰かに伝えたくなる話
    2022/03/11

    View Slide

  2. 自己紹介
    奥澤(@okuzawats)
    Androidアプリエンジニ
    ア@フラー株式会社
    テックリード
    「Jetpack Composeに
    よるAndroid MVVMアー
    キテクチャ入門」の著者

    View Slide

  3. 今夜のトピックス
    1. 自己紹介
    2. なんでKotlinのifを愛でるのか
    3. Coding Conventions
    4. 事例
    5. NG例
    6. まとめ

    View Slide

  4. なんでKotlinのifを愛でるのか
    ifは最も基本的なプログラムの構成要素
    ifに思い入れを持ってプログラムを書くことで、他のところもいい感じに書けるようになる(かもしれない)
    逆に言うと、ifすら蔑ろにすると他のところも残念なことになりそう(偏見)
    Coding conventionsを読む習慣を付ける

    View Slide

  5. Coding Conventions
    Kotlin公式のCoding conventions
    https://kotlinlang.org/docs/coding-conventions.html
    AndroidのKotlin style guide
    https://developer.android.com/kotlin/style-guide

    View Slide

  6. ifに関するCoding conventions
    AndroidのKotlin style guideには以下の記載がある

    View Slide

  7. ifに関するCoding conventions
    つまり、
    みたいに一行に収まる(三項演算子みたいな)if-elseか、
    みたいにブロックを書くかのどちらか。

    View Slide

  8. Kotlin公式のCoding conventionsには明確に書かれてないけどサンプルコードに示されるif-elseはこのスタイルで書かれている

    View Slide

  9. ここまでが前置きで、これを踏まえて愛でていきます。

    View Slide

  10. example.1 ひとつひとつreturnを書

    View Slide

  11. example.1 ひとつひとつreturnを書

    寸評
    古き良き書き方実家のような安心感だが、IDEに怒られるのが玉に瑕。
    Kotlinのifは値を返す式なので、ifを返せば良い。その方がKotlinらしいコードになる(と思う)。

    View Slide

  12. example.2 ifをreturnする

    View Slide

  13. example.2 ifをreturnする
    寸評
    直接if-elseの評価結果を返すので、どんな値がreturnされるのかがわかりやすい。
    returnの前に早期リターンすることは可能なので、単にif-elseだけ見ていれば良いというわけではないのが玉に瑕。
    example.1よりもKotlinらしいコードになった(と思う)。

    View Slide

  14. example.3 ブロックを省略する

    View Slide

  15. example.3 ブロックを省略する
    寸評
    Kotlin style guideに書かれている書き方(ただし一行に収まる場合)。三項演算子の代わりに使えてしまう。
    Kotlinらしい書き方だけど、一行が長くなると改行が欲しくなり、ブロックを足さないといけなくなるのが玉に瑕。

    View Slide

  16. example.4 関数本体を返す

    View Slide

  17. example.4 関数本体を返す
    寸評
    早期リターンなどが発生し得ない書き方。
    if-elseの評価結果が返されるので、どんな値が返されるのかは一目瞭然。
    個人的には好き。
    行数が少なくなって人類が幸せになる。

    View Slide

  18. example.5 Scalaでみる書き方

    View Slide

  19. example.5 Scalaでみる書き方
    寸評
    Scalaだとこういう書き方をする気がする(Scalaというか関数型言語?)
    個人的にはこの書き方が一番好きだけど、チーム開発だと推しにくい。
    example.3、example.4くらいがちょうどいいかもしれない。
    書籍Functional Programming Kotlinではこの書き方をしているので、関数型に馴染みがあるとこういう書き方を好むのかもしれない。

    View Slide

  20. NG例

    View Slide

  21. NG1 ブロック省略&改行あり

    View Slide

  22. NG1 ブロック省略&改行あり
    寸評
    Kotlin style guide違反。
    何で違反になっているかはわからない
    Dangling else?

    View Slide

  23. NG2 ifとelseが非対称

    View Slide

  24. NG2 ifとelseが非対称
    寸評
    個人的にはNG。if-elseが非対称なので目が滑る。
    if-elseを対象的に(同じ書き方で)書きたい。

    View Slide

  25. 発表時間の都合で以下略
    処理の途中でifを使って副作用のあるコードを実行するパターン
    早期リターンするパターン

    View Slide

  26. まとめ
    Kotlinはifだけ見ても色々な書き方ができる。
    Kotlinの言語機能を活かした、Kotlinらしいコードが書けると読みやすいコードになると思う。
    自分たちだけの最強のifを見つけよう!

    View Slide