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