Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

DMM Android Meetup#5 「例外と向き合う」

irom219
June 23, 2023

DMM Android Meetup#5 「例外と向き合う」

irom219

June 23, 2023
Tweet

More Decks by irom219

Other Decks in Technology

Transcript

  1. © DMM 2 名前 森 幸浩 (もり ゆきひろ) 所属 電子書籍事業部

    Androidチーム 自己紹介 • 約3年電子書籍事業部のAndroidチームで開発 • リファクタリングや新機能開発を担当
  2. © DMM 3 ▪ 例外についての言語仕様 - Java言語での例外 - Kotlin言語での例外 -

    検査例外がなくなった背景 ▪ Kotlinの例外処理のアプローチ - 非検査例外 - エラー状態の定義 ▪ DMMブックスでの例外処理のアプローチ - 非検査例外の独自定義 目次
  3. © DMM Java言語での例外 8 検査例外 ▪ コンパイル時にtry-catchがされているかを チェックする 例外処理をプログラマに強制する 非検査例外

    (RuntimeException) ▪ コンパイル時にtry-catchがされているかを チェックしない 例外処理はプログラマの判断に任される
  4. © DMM DMMブックスアプリでのアプローチ 非検査例外を独自定義 - 関心ごとのある例外をsealedクラスで定義 → 網羅性をある程度 確保 -

    文脈単位で定義することで伝播する例外を集約 → 中間層での可読性の向上 といった感じで 例外を階層化し集約することで複雑さを整理することにしました 32
  5. © DMM まとめ ▪ 例外についての言語仕様 Java言語では検査例外があるがKotlinでは検査例外がない 検査例外はスケールが大きくなると生産性が落ち、品質向上につながらない そのためKotlinでは検査例外が廃止された ▪ Kotlinの例外処理のアプローチ

    非検査例外 可読性は上がるが 網羅性に問題あり エラー定義 網羅性はあるが 定義量が多くなる ▪ DMMブックスでの例外処理のアプローチ 非検査例外を独自に階層化し集約 関心事のある例外のみを定義することで網羅性と可読性をあげた 34