lezione 10

architettura kotlin

clean architecture e layer separati.

livello: avanzato durata: 36 min output: app scalabile badge: kotlin essentials

architecture

interface ProjectService { fun load(): List<String> }
class ProjectViewModel(private val service: ProjectService) {
  val items = service.load()
}

data class

data class Shot(val id: Int, val name: String)
val shot = Shot(1, "A")

coroutines

import kotlinx.coroutines.*
fun main() = runBlocking {
  launch { delay(100); println("ok") }
}

extension functions

fun String.slug(): String = lowercase().replace(" ", "-")
println("Hello World".slug())

esercizi

usa coroutine per eseguire task paralleli.

import kotlinx.coroutines.*
fun main() = runBlocking {
  val job = async { 2 + 2 }
  println(job.await())
}

panoramica

In questo capitolo su architettura kotlin lavoriamo su architecture, data class, coroutines, extension functions per creare micro-pattern riutilizzabili.

lavora in sequenza: leggi, prova, modifica gli snippet e annota i trade-off principali.

badge: kotlin essentials

obiettivi

  • capire e applicare architecture in uno scenario reale
  • capire e applicare data class in uno scenario reale
  • capire e applicare coroutines in uno scenario reale
  • capire e applicare extension functions in uno scenario reale

scheda rapida

interface ProjectService { fun load(): List<String> }
class ProjectViewModel(private val service: ProjectService) {
  val items = service.load()
}

adatta questo scheletro agli esempi della lezione.

tips

  • usa val quando possibile
  • sfrutta data class
  • gestisci null in modo esplicito
  • coroutines con scope chiari
  • moduli gradle coerenti
  • gestisci timeout e cancellazioni

tip: documenta ogni scelta architetturale.

mini progetto

esegui due task con coroutines.

  • crea scope
  • lancia async
  • attendi risultati

output atteso: task completati.

checklist

  • ho eseguito gli snippet e controllato l'output
  • ho annotato almeno 2 trade-off
  • ho completato il mini progetto
  • ho salvato un riepilogo personale
start a brief