building a product

004: Henne oder Ei: Was brauchen wir zuerst?


Listen Later

Benjamin und Sven unterhalten sich über die alltäglichen Herausforderungen während der Entwicklung eines Produkts, das von Grund auf entsteht.

Die Herausforderungen dabei:
  • Wo sollen wir starten?
  • Fehlende Frameworks und Grundlagen für Datenbankzugriffe, Validierung und Fehlerbehandlung
  • Aufbaue einer Code- und Package-Struktur
  • Anbindung an externe Dienste wie Datenbanken, Message-Broker und Mail-Server
Wie gewohnt schweifen wir dabei ab und reden über
  • Type-driven Development
  • Funktionale Fehlerbehandlung
  • ktor-Module
  • DAO-Schnitte
Unter Berücksichtigung all dieser Herausforderungen fragen wir uns, ob die Umsetzung der fachlichen Funktionalität als Self-contained-System wirklich eine gute Idee war.

Bei der Erkenntnis der Woche gibt's (mal wieder) ein Loblied von Benjamin auf jOOQ (und nein: Wir werden nicht dafür bezahlt).

Code-Beispiel zum funktionalen Fehlerhandling mit either und bindfun readTeams(): Either> { ... }
fun readUsers(): Either> { ... }
fun assignUserToTeam(user: User, team: Team): Either { ... }
suspend fun addAllUsersToAllTeams(): Either =
either {
val teams = readTeams().bind()
val users = readUsers().bind()
teams.forEach { team ->
users.forEach { user ->
assignUserToTeam(user, team).bind()
}
}
}
Links
  • Arrow: „Functional companion to Kotlin's Standard Library“
  • jOOQ: „Build type save SQL queries through a fluent API“
  • valiktor: „Type-safe, powerful and extensible fluent DSL to validate objects in Kotlin“
...more
View all episodesView all episodes
Download on the App Store

building a productBy Sven Wiegand – orgavision GmbH