Designing robust APIs in Kotlin.
Designing robust APIs in KotlinJaewoong Eum
View Slide
About megithub.com/skydoves
How to build solid APIs? 🤔
API design API surface
API designClientClientClientClientAPI surface
API design Minimal API surface area
API designClientClientClientClientMinimal API surface area
API visibilityprivate internalimportanceprotected publicVisibility modifiers
API visibilitypublicimportanceClientClientClientprivate internalprotectedVisibility modifiers
API visibility Property
API visibility Propertysetter getter
API visibility Property// penguinsetter getter
API visibility Propertysetter getterCannot assign to 'data': the setter is private in 'MyViewModel`
API visibility Extension
API visibility ExtensionUnresolved reference
API visibility Extension😵
API visibility @JvmSynthetic
API visibility @JvmSyntheticUnresolved reference
API visibility @PublishedApi
API visibility KEEP
API visibility Explicit API mode
API visibility Explicit API mode (strict)
API visibility Explicit API mode (warning)
API visibility Binary compatibility validator
API visibility Binary compatibility validatorbuild.gradlemodule.gradleOn terminal
API visibility Binary compatibility validatormodule.api
API visibility metalava
ClientClientClientClientAPI maintenance API surface
API maintenance API lifecycleCreatedDeprecated(warning)RemovedDeprecated(error)
API maintenance @Deprecated (warning)
API maintenance @Deprecated (warning)Show Context Actions
API maintenance @Deprecated (error)
API maintenance API lifecycleCreatedDeprecated(warning)RemovedDeprecated(error)v4.2.10 v4.2.20 v4.2.21 v4.3.0
API maintenance API lifecycleCreatedDeprecated(warning)RemovedDeprecated(error)v4.2.10 v4.2.20 v4.2.21 v4.3.0Client
API maintenance API lifecycleClientClientCreatedDeprecated(warning)RemovedDeprecated(error)v4.2.10 v4.2.20 v4.2.21 v4.3.0
API maintenance Deprecations
ClientClientClientClientAPI maintenance @RequiresOptIn
ClientClientClientClientAPI maintenance @RequiresOptInExperimental
ClientClientClientClientAPI maintenance @RequiresOptIn@RequiresOptIn
API maintenance @RequiresOptIn
API maintenance @RequiresOptInCore module UI module
API maintenance @RequiresOptInCore module UI moduleClientClient
References● Kotlin Docs○ https://kotlinlang.org/docs/home.html● Mastering API Visibility in Kotlin (Márton Braun)○ https://zsmb.co/mastering-api-visibility-in-kotlin/● KEEP - Kotlin Evolution and Enhancement Process○ https://github.com/Kotlin/KEEP● Binary Compatibility Validator○ https://github.com/Kotlin/binary-compatibility-validator● Effective Kotlin○ https://leanpub.com/effectivekotlin● Balloon○ https://github.com/skydoves/Balloon● Stream Chat Android○ https://github.com/GetStream/stream-chat-android
Reach out[email protected]https://github.com/skydoveshttps://twitter.com/github_skydoveshttps://medium.com/@skydoves
Thank You!