Jetpack Compose Academy · Pelajaran

Mengapa DI: Kode yang Mudah Diuji dan Tidak Terikat

Lihat masalah yang diselesaikan Hilt.

Pelajaran 1 dari 413 langkah

Mengapa DI: Kode yang Mudah Diuji dan Tidak Terikat adalah pelajaran Jetpack Compose Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Jetpack Compose Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Jetpack Compose Academy mencakup 4 pelajaran total.

Apa Itu Injeksi Dependensi?

Injeksi dependensi berarti sebuah kelas menerima objek yang dibutuhkannya dari luar, alih-alih membuatnya sendiri. Lebih sedikit penyambungan, lebih banyak fokus. 🔌

Masalahnya: new di Mana-Mana

Ketika sebuah kelas memanggil new untuk dependensinya sendiri, kelas tersebut terikat pada tipe yang persis itu. Mengubah satu hal memaksa Anda mengedit banyak berkas.

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

Injeksi, Bukan Konstruksi

Teruskan dependensi melalui konstruktor dan biarkan sesuatu yang lain membuatnya. Kini kelas Anda hanya menyatakan kebutuhannya, bukan cara membuatnya.

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

Pemisahan Ketergantungan secara Nyata

Dengan injeksi, kode Anda bergantung pada sebuah antarmuka, bukan kelas konkret. Anda dapat mengganti implementasi nyata dengan implementasi lain tanpa menyentuh pengguna dependensi tersebut.

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

Kemudahan Pengujian adalah Keunggulan Utama

Dalam pengujian, Anda cukup meneruskan dependensi tiruan. Tanpa jaringan, tanpa basis data, tanpa kejutan—hanya pemeriksaan yang cepat dan mudah diprediksi. ✅

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

DI Manual Menjadi Merepotkan

Anda dapat melakukan injeksi secara manual, tetapi menyambungkan grafik dependensi yang dalam berarti menulis banyak kode pendukung. Setiap dependensi baru merambat ke atas melalui konstruktor.

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

Hadirkan Hilt

Hilt adalah pustaka DI yang direkomendasikan Android. Hilt membuat kode penyambungannya saat kompilasi, sehingga Anda cukup menjelaskan kebutuhan dan Hilt membangun grafiknya.

Hilt Dibangun di Atas Dagger

Hilt dibangun di atas Dagger, tetapi menambahkan pengaturan bawaan yang memahami Android. Anda mendapatkan keamanan saat kompilasi dengan konfigurasi yang jauh lebih sedikit dibandingkan Dagger langsung.

Tandai Application Anda

Hilt dimulai dari akar aplikasi. Beri anotasi pada kelas Application Anda dengan @HiltAndroidApp untuk membuat wadah dependensi tingkat teratas.

@HiltAndroidApp
class MyApp : Application()

Lakukan Injeksi dengan @Inject

Tambahkan @Inject ke konstruktor agar Hilt mengetahui cara membuat tipe tersebut. Setelah itu, Hilt dapat menyediakannya di mana pun dibutuhkan.

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

Keamanan Saat Kompilasi

Jika sebuah dependensi tidak tersedia, Hilt gagal pada waktu kompilasi, bukan saat aplikasi berjalan. Anda dapat menemukan kesalahan penyambungan sebelum aplikasi dirilis. 🛡️

Pemeriksaan Singkat

Manfaat mana yang paling tepat menjelaskan alasan kita menggunakan injeksi dependensi?

Ringkasan: Mengapa DI Penting

Anda mempelajari bahwa DI memberikan dependensi kepada sebuah kelas, memisahkan ketergantungan kode, dan membuat pengujian menjadi mudah. Hilt mengotomatiskan penyambungan tersebut saat kompilasi. 🎉

Gratis untuk memulai

Belajar Kotlin dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
30
Pelajaran
120

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Mengapa DI: Kode yang Mudah Diuji dan Tidak Terikat” gratis?

Ya — teks lengkap “Mengapa DI: Kode yang Mudah Diuji dan Tidak Terikat” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Jetpack Compose Academy, upgrade ke CoddyKit PRO. Kursus Jetpack Compose Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Mengapa DI: Kode yang Mudah Diuji dan Tidak Terikat”?

Lihat masalah yang diselesaikan Hilt. Kamu berlatih Jetpack Compose Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Jetpack Compose Academy?

Tidak diperlukan pengalaman sebelumnya. Jetpack Compose Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Mengapa DI: Kode yang Mudah Diuji dan Tidak Terikat” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Jetpack Compose Academy ini?

Ya. Setiap pelajaran Jetpack Compose Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Mengapa DI: Kode yang Mudah Diuji dan Tidak Terikat
  2. Modul, @Provides & @Binds
  3. hiltViewModel & @HiltViewModel
  4. Scope & Masa Hidup Komponen
← Kembali ke Jetpack Compose Academy