Dicoding Developer Coaching merupakan webinar, yang membahas tuntas kendala maupun pertanyaan yang sering ditanyakan di Academy Dicoding.
Tema kali ini adalah "Depedency Injection dengan Dagger, Hilt, & Koin"
Dependency Injection adalah salah satu Design Pattern yang paling populer dalam dunia object oriented programming (OOP). Mengapa demikian? Dependency Injection membuat aplikasi yang kita buat menjadi lebih mudah dipelihara dan dikembangkan. Dalam Dependency Injection di Android, terdapat 3 library yang wajib kalian ketahui yaitu Dagger, Hilt, dan Koin.
5. What’s we get
● Class Car dan Engine saling terhubung erat
(tightly coupled). Sehingga ketika ingin
membuat object baru dengan Engine yang
berbeda, Anda harus membuat Class Car yang
baru lagi.
● Membuat unit testing menjadi lebih sulit.
Karena Anda harus menggunakan real object
Engine secara langsung, Anda tak bisa
menerapkan test-double seperti membuat
fake object atau mock object.
9. Method/Field
Injection
Beberapa kelas mungkin tidak bisa
ditambahkan constructor karena
memang sudah dibuat oleh sistem,
contohnya seperti Activity dan
Fragment. Jadi, cara yang bisa dilakukan
yaitu mengirimkan dependency
tersebut melalui setter setelah kelas itu
dibuat seperti disamping
11. Service
Locator
Service locator berbeda dengan
dependency injection dalam hal
mengontrol dependensi. Pada service
locator class Car yang mengontrol
untuk mengambil object mana yang
akan di-inject. Sedangkan pada
dependency injection Application-lah
yang memiliki kontrol untuk
memberikan / meng-inject object yang
membutuhkan.
15. Dagger adalah library yang sebelumnya dibuat oleh Square dan kini
di-maintain oleh Google. Library ini termasuk yang banyak digunakan oleh
industri sejak lama. Library ini akan otomatis men-generate kode untuk
injection saat di-compile daripada menuliskannya satu per satu. Sehingga
kode Anda menjadi lebih mudah untuk di-refactor, lebih mudah dites, dan
lebih mudah digunakan kembali. Saat ini Dagger terus mengalami
perkembangan dan support yang lebih bagus dengan Android Studio.
16. Koin adalah library dependency injection yang dibuat 100% Kotlin oleh
Arnaud Giuliani bersama dengan komunitas. Dengan menggunakan Koin
Anda bisa membuat dependency injection dengan lebih simpel karena
tanpa generated code yang berlebih seperti Dagger. Walaupun banyak
yang menyebut bahwa Koin bukan dependency injection -melainkan
service locator-, banyak industri yang menggunakan Koin karena lebih
mudah dipelajari daripada Dagger.
18. Basic concepts
Ada 3 (tiga) syarat supaya Dagger bisa melakukan injection, yaitu:
● Field yang akan di-inject harus public.
● Field yang akan di-inject harus diberi annotation @Inject.
● Method inject(client) harus dipanggil dari activity/fragment yang
membutuhkan.
29. Basic concepts
Ada 3 (tiga) syarat untuk melakukan injection pada Koin, yaitu:
● Field yang akan di-inject harus bertipe val.
● Field yang akan di-inject harus menggunakan lazy evaluation by inject().
● Constructor yang di-inject tidak boleh private.