Jetpack Compose Academy · Lektion

Hvorfor DI: Testbar, afkoblet kode

Se, hvilke problemer Hilt løser.

Lektion 1 af 413 trin

Hvorfor DI: Testbar, afkoblet kode er en gratis Jetpack Compose Academy-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Jetpack Compose Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Jetpack Compose Academy-kurset indeholder 4 lektioner i alt.

Hvad er afhængighedsinjektion?

Afhængighedsinjektion betyder, at en klasse modtager de objekter, den har brug for, udefra i stedet for selv at oprette dem. Mindre sammenkobling, mere fokus. 🔌

Problemet: new overalt

Når en klasse selv kalder new på sine afhængigheder, bliver den bundet til netop disse typer. Hvis du ændrer én ting, skal du redigere mange filer.

class Repo {
    private val api = ApiService() // hard-wired
}

Injicér i stedet for at konstruere

Send afhængigheder ind gennem konstruktøren, og lad noget andet oprette dem. Nu angiver din klasse kun, hvad den har brug for, ikke hvordan det skal oprettes.

class Repo(private val api: ApiService) {
    // api is given to us
}

Afkobling i praksis

Med injektion afhænger din kode af en grænseflade, ikke en konkret klasse. Du kan udskifte den rigtige implementering med en anden uden at ændre forbrugeren.

interface ApiService { fun load(): String }
class Repo(private val api: ApiService)

Testbarhed er den store gevinst

I tests sender du blot en falsk afhængighed ind. Intet netværk, ingen database, ingen overraskelser – kun hurtige og forudsigelige kontroller. ✅

val fake = object : ApiService { override fun load() = "hi" }
val repo = Repo(fake)

Manuel DI bliver besværligt

Du kan injicere manuelt, men det betyder meget standardkode at forbinde dybe grafer. Hver ny afhængighed forplanter sig op gennem konstruktørerne.

val api = ApiService()
val repo = Repo(api)
val vm = MyViewModel(repo) // by hand

Hils på Hilt

Hilt er Androids anbefalede DI-bibliotek. Det genererer forbindelserne for dig ved kompilering, så du beskriver behovene, og Hilt opbygger grafen.

Hilt bygger oven på Dagger

Hilt er bygget på Dagger, men tilføjer Android-bevidste standardindstillinger. Du får sikkerhed ved kompilering med langt mindre opsætning end med rå Dagger.

Markér din applikation

Hilt starter ved appens rod. Annotér din Application-klasse med @HiltAndroidApp for at generere den overordnede afhængighedscontainer.

@HiltAndroidApp
class MyApp : Application()

Injicér med @Inject

Tilføj @Inject til en konstruktør, så Hilt lærer, hvordan den type skal oprettes. Derefter kan Hilt levere den overalt, hvor der er brug for den.

class Repo @Inject constructor(private val api: ApiService)

Sikkerhed ved kompilering

Hvis en afhængighed mangler, fejler Hilt ved kompilering og ikke under kørsel. Du opdager fejl i forbindelserne, før appen overhovedet udgives. 🛡️

Hurtigt tjek

Hvilken fordel beskriver bedst, hvorfor vi bruger afhængighedsinjektion?

Opsummering: Hvorfor DI er vigtigt

Du har lært, at DI giver en klasse dens afhængigheder, afkobler kode og gør tests enkle. Hilt automatiserer forbindelserne ved kompilering. 🎉

Gratis at komme i gang

Lær Kotlin med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
30
Lektioner
120

Ofte stillede spørgsmål

Er lektionen “Hvorfor DI: Testbar, afkoblet kode” gratis?

Ja — hele teksten til “Hvorfor DI: Testbar, afkoblet kode” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Jetpack Compose Academy-kurset, skal du opgradere til CoddyKit PRO. Jetpack Compose Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Hvorfor DI: Testbar, afkoblet kode”?

Se, hvilke problemer Hilt løser. Du øver dig i Jetpack Compose Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Jetpack Compose Academy?

Der kræves ingen tidligere erfaring. Jetpack Compose Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.

Hvor lang tid tager lektionen “Hvorfor DI: Testbar, afkoblet kode”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Jetpack Compose Academy-lektion?

Ja. Alle Jetpack Compose Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Hvorfor DI: Testbar, afkoblet kode
  2. Moduler, @Provides og @Binds
  3. hiltViewModel og @HiltViewModel
  4. Scopes og komponenters levetid
← Tilbage til Jetpack Compose Academy