Miksi DI: testattava ja irtikytketty koodi
Nähkää, mitkä ongelmat Hilt ratkaisee.
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 handHilt 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. 🎉
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
- Miksi DI: testattava ja irtikytketty koodi
- Moduulit, @Provides ja @Binds
- hiltViewModel ja @HiltViewModel
- Rajaukset ja komponenttien elinkaaret