Menurut Anda mana yang lebih bagus? Dagger atau Koin? Anda pasti juga sudah merasakan kelebihan dan kekurangan masing-masing framework nya bukan ?. Baik, kita rangkum terlebih dahulu konsep dasar dari keduanya.
Perbedaan FungsiĀ
Koin | Dagger | |
Module | module{} | @Module |
Cara Provide | factory {} | @Provides dan @Binds |
Singleton | single {} | @Singleton |
Constructor Injection | get () | @Inject Pada Constructor |
Inject Ke Activity | Menggunakan startKoin | Menggunakan Componen Untuk generate kode injection |
Inject Context | androidContext | @BindsInstance |
Inject Ke Field | by Inject | @Inject |
Inject ViewModel | viewModel {} dengan by viewModel () | Dagger Multi binding dengan @IntoMap |
Kelebihan dan kekurangan
Koin | Dagger | |
Bahasa | Dibuat dengan kotlin | Dibuat dengan java |
Code generation | Tanpa generate code | Banyak kode yang di generate |
Baris kode | Lebih sedikit | Lebih banyak |
Annotation | Tanpa annotation | Menggunakan Annotation |
Error | Error baru diketahui saat runtime | Error diketahui sejak di compile |
Track Error | Lebih mudah dicari | Lebih sulit dicari |
Pengguna | Masih baru dibandingkan dengan dagger | Sudah banyak digunakan perusahaan besar sejak lama |
Proses belajar | Lebih mudah dipelajari | Lebih sulit dipelajari |
Menurut saya Koin sangat jauh lebih mudah dan simpel untuk dipelajari. Apalagi Koin sudah support dengan ViewModel yang membuatnya unggul. Namun perhatikan bahwa tidak dipungkiri saat ini perusahaan besar masih menggunakan Dagger karena ia sangat robust alias kuat. Jadi Anda juga harus paham tentang Dagger jika ingin diterima di perusahaan tersebut. Selain itu support Google di belakangnya akan membuat Dagger semakin terintegrasi dengan Android Studio.