Jetpack Compose Academy · Oppitunti

Miksi DI: testattava ja irtikytketty koodi

Nähkää, mitkä ongelmat Hilt ratkaisee.

Oppitunti 1/413 vaihetta

Miksi DI: testattava ja irtikytketty koodi on ilmainen Jetpack Compose Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Jetpack Compose Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Jetpack Compose Academy-kurssilla on yhteensä 4 oppituntia.

Mitä riippuvuuksien injektointi tarkoittaa?

Riippuvuuksien injektointi tarkoittaa, että luokka saa tarvitsemansa oliot ulkopuolelta sen sijaan, että loisi ne itse. Vähemmän kytkentää, enemmän keskittymistä. 🔌

Ongelma: new kaikkialla

Kun luokka kutsuu new-operaattoria omille riippuvuuksilleen, se sidotaan tarkasti näihin tyyppeihin. Yhden asian muuttaminen pakottaa muokkaamaan monia tiedostoja.

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

Injektoi rakentamisen sijaan

Välitä riippuvuudet konstruktorin kautta ja anna jonkin muun luoda ne. Tällöin luokka ilmoittaa vain, mitä se tarvitsee, ei sitä, miten se rakennetaan.

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

Irrottaminen käytännössä

Injektoinnin avulla koodisi riippuu rajapinnasta eikä konkreettisesta luokasta. Voit vaihtaa oikean toteutuksen toiseen koskematta riippuvuuden käyttäjään.

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

Testattavuus on merkittävä hyöty

Testeissä välität yksinkertaisesti feikki-riippuvuuden. Ei verkkoa, tietokantaa tai yllätyksiä, vain nopeita ja ennakoitavia tarkistuksia. ✅

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

Manuaalinen DI käy työlääksi

Voit injektoida riippuvuudet käsin, mutta syvien riippuvuusgraafien kytkeminen tarkoittaa suuren mallikoodimäärän kirjoittamista. Jokainen uusi riippuvuus heijastuu ylöspäin konstruktoreihin.

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

Hilt astuu kuvaan

Hilt on Androidin suosittelema DI-kirjasto. Se luo kytkennät käännösaikana puolestasi, joten kuvaat tarpeet ja Hilt rakentaa graafin.

Hilt rakentuu Daggerin päälle

Hilt on rakennettu Daggerin päälle, mutta se lisää Android-tietoiset oletusasetukset. Saat käännösaikaisen turvallisuuden huomattavasti pienemmällä määritystyöllä kuin raakaa Daggeria käyttäessäsi.

Merkitse Application

Hilt käynnistyy sovelluksen juuresta. Merkitse Application-luokkasi annotaatiolla @HiltAndroidApp, jotta ylätason riippuvuussäilö voidaan luoda.

@HiltAndroidApp
class MyApp : Application()

Injektoi @Inject-annotaatiolla

Lisää konstruktorille @Inject, niin Hilt oppii luomaan kyseisen tyypin. Sen jälkeen se voi tarjota tyypin kaikkialla, missä sitä tarvitaan.

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

Käännösaikainen turvallisuus

Jos jokin riippuvuus puuttuu, Hilt ilmoittaa virheestä käännösaikana, ei ajonaikana. Havaitset kytkentävirheet ennen kuin sovellus julkaistaan. 🛡️

Pikatarkistus

Mikä hyöty kuvaa parhaiten sitä, miksi käytämme riippuvuuksien injektointia?

Kertaus: Miksi DI on tärkeää

Opit, että DI antaa luokalle sen riippuvuudet, irrottaa koodin toisistaan ja tekee testeistä helppoja. Hilt automatisoi tämän kytkennän käännösaikana. 🎉

Aloita maksutta

Opi Kotlin tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
30
Oppitunnit
120

Usein kysytyt kysymykset

Onko oppitunti ”Miksi DI: testattava ja irtikytketty koodi” ilmainen?

Kyllä – oppitunnin ”Miksi DI: testattava ja irtikytketty koodi” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Jetpack Compose Academy-kurssin, päivitä CoddyKit PROhon. Jetpack Compose Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Miksi DI: testattava ja irtikytketty koodi”?

Nähkää, mitkä ongelmat Hilt ratkaisee. Harjoittelet Jetpack Compose Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Jetpack Compose Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Jetpack Compose Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.

Kuinka kauan ”Miksi DI: testattava ja irtikytketty koodi”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Jetpack Compose Academy-oppitunnilla?

Kyllä. Jokainen Jetpack Compose Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Miksi DI: testattava ja irtikytketty koodi
  2. Moduulit, @Provides ja @Binds
  3. hiltViewModel ja @HiltViewModel
  4. Rajaukset ja komponenttien elinkaaret
← Takaisin: Jetpack Compose Academy