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

Delightful Delegate Design (droidcon Americas 2020)

Marton Braun
November 17, 2020

Delightful Delegate Design (droidcon Americas 2020)

When developing a library, designing an easy to use API while hiding unnecessary implementation details from clients is fundamental. This talk looks at some of the API design choices made for Krate, an Android SharedPreferences wrapper library.

Marton Braun

November 17, 2020
Tweet

More Decks by Marton Braun

Other Decks in Programming

Transcript

  1. Delightful Delegate Design
    Márton Braun
    zsmb.co zsmb13

    View Slide

  2. View Slide

  3. View Slide

  4. View Slide

  5. View Slide

  6. View Slide

  7. View Slide

  8. View Slide

  9. View Slide

  10. View Slide

  11. View Slide

  12. View Slide

  13. View Slide

  14. View Slide

  15. View Slide

  16. View Slide

  17. View Slide

  18. View Slide

  19. View Slide

  20. View Slide

  21. View Slide

  22. View Slide

  23. View Slide

  24. View Slide

  25. View Slide

  26. View Slide

  27. View Slide

  28. View Slide

  29. View Slide

  30. View Slide

  31. View Slide

  32. View Slide

  33. AutSoft/Krate

    View Slide

  34. krate

    View Slide

  35. krate

    View Slide

  36. krate
    app

    View Slide

  37. app
    krate

    View Slide

  38. app
    krate

    View Slide

  39. krate
    app

    View Slide

  40. krate
    app

    View Slide

  41. app
    krate

    View Slide

  42. app
    krate

    View Slide

  43. krate
    app

    View Slide

  44. app
    krate

    View Slide

  45. app
    krate

    View Slide

  46. app
    krate

    View Slide

  47. app
    krate

    View Slide

  48. app
    krate

    View Slide

  49. app
    krate

    View Slide

  50. app
    krate

    View Slide

  51. app
    krate

    View Slide

  52. app
    krate

    View Slide

  53. app
    krate

    View Slide

  54. app
    krate

    View Slide

  55. app
    krate

    View Slide

  56. app
    krate

    View Slide

  57. zsmb.co/mastering-api-visibility-in-kotlin/

    View Slide

  58. app
    krate

    View Slide

  59. app
    krate

    View Slide

  60. app
    krate

    View Slide

  61. app
    krate

    View Slide

  62. app
    krate

    View Slide

  63. app
    krate

    View Slide

  64. app
    krate

    View Slide

  65. app
    krate

    View Slide

  66. app
    krate

    View Slide

  67. app
    krate

    View Slide

  68. app
    krate

    View Slide

  69. app
    krate

    View Slide

  70. app
    krate

    View Slide

  71. app
    krate

    View Slide

  72. app
    krate

    View Slide

  73. app
    krate

    View Slide

  74. app
    krate

    View Slide

  75. app
    krate

    View Slide

  76. app
    krate

    View Slide

  77. app
    krate

    View Slide

  78. app
    krate

    View Slide

  79. app
    krate

    View Slide

  80. app
    krate

    View Slide

  81. app
    krate

    View Slide

  82. app
    krate

    View Slide

  83. app
    krate

    View Slide

  84. app
    krate

    View Slide

  85. app
    krate

    View Slide

  86. app
    krate

    View Slide

  87. app
    krate

    View Slide

  88. app
    krate

    View Slide

  89. app
    krate

    View Slide

  90. app
    krate

    View Slide

  91. app
    krate

    View Slide

  92. app
    krate

    View Slide

  93. app
    krate

    View Slide

  94. app
    krate

    View Slide

  95. zsmb.co/maintaining-compatibility-in-kotlin-libraries/

    View Slide

  96. Krate*

    View Slide

  97. Krate*

    View Slide

  98. Krate*

    View Slide

  99. Krate*

    View Slide

  100. Krate*

    View Slide

  101. Krate*

    View Slide

  102. Krate*

    View Slide

  103. Krate*

    View Slide

  104. References
    • Krate
     https://github.com/AutSoft/Krate
    • Delightful Delegate Design
     https://blog.autsoft.hu/delightful-delegate-design/
    • Further reading
     Mastering API Visibility in Kotlin
     https://zsmb.co/mastering-api-visibility-in-kotlin/
     Maintaining Compatibility in Kotlin libraries
     https://zsmb.co/maintaining-compatibility-in-kotlin-libraries/
     DSL Design
     https://zsmb.co/kotlin-dsl-design-with-village-dsl/
     Tips for writing a library
     https://www.kotlindevelopment.com/tips-for-writing-a-library-in-kotlin/

    View Slide

  105. zsmb.co/talks
    zsmb13

    View Slide