Kotlinによる開発の難しさの一つにエラーハンドリングの難しさが挙げられます。
KotlinではJavaと違い検査例外がないため関数の呼び元でエラーハンドリングを強制できません。また、どのエラーに対応するべきかは中身の実装を見る必要があります。
この問題の解決策として、Railway Oriented Programmingとその実装としてOSS kotlin-resultを紹介します。
Railway Oriented Programmingでは正常ケースと異常ケースの2つのレールを型で表現しながら開発する手法です。
異常ケースが型で表現されるためエラーハンドリングのミスがコンパイラーフェーズで気付けるようになります。
具体的には関数型プログラミングにおけるResultやEitherという成功値かエラー値かのどちらか一方の値を持ったデータ構造を使ってエラーハンドリングを行います。