Keuntungan Pemakaian Dependency Injection

Keuntungan Pemakaian Dependency Injection

Halo sobat koding… Kali ini gw mau bahas dependency injection, mungkin bagi programmer metode ini tidak asing. Jadi apa itu dependency injection? dan apa keuntungannya?

Depedency Injection (DI) adalah teknik yang banyak digunakan dalam pemrograman dan sesuai dengan pengembangan Android. Dengan mengikuti prinsip-prinsip DI, kalian mengatur dasar arsitektur aplikasi yang baik. DI merupakan sebuah teknik untuk mengatur cara bagaimana suatu objek dibentuk ketika terdapat objek lain yang membutuhkan. Ada 2 istilah dalam DI, yaitu:

  • Service, merupakan suatu objek atau komponen yang melakukan tugas tertentu, dan dapat digunakan oleh client.

Namun objek Service juga bisa menjadi Client untuk objek Service lainnya, begitu juga dengan objek Client, bisa juga sebagai Service untuk objek Client lainnya.

Ayo kita mengenal lebih dalam lagi tentang Dependency Injection

Keuntungan Pemakaian Dependency Injection

Kode diatas merupakan kode yang tidak menggunakan dependency injection. Kenapa begitu ?  karena class Car menyusun Engine-nya sendiri. Hal ini dapat menjadi masalah karena:

  • Car dan Engine disandingkan dengan erat – instance Car menggunakan satu jenis Engine, dan tidak ada subclass atau implementasi alternatif yang dapat digunakan dengan mudah. Jika Car menyusun Engine-nya sendiri, Anda harus membuat dua jenis Car, bukan hanya menggunakan kembali Car yang sama untuk mesin berjenis Gas dan Electric.
  • Dependensi keras pada Engine membuat pengujian menjadi lebih sulit.
Baca juga  Cara Kerja Recyclerview di Android

Lalu, bagaimana kode yang menggunakan dependency injection ?

Keuntungan Pemakaian Dependency Injection

Kurang lebih seperti kode diatas. Fungsi main menggunakan Car. Karena Car bergantung pada Engine, aplikasi akan membuat instance Engine, kemudian menggunakannya untuk membuat instance Car. Manfaat pendekatan berbasis DI ini adalah:

  • Penggunaan kembali Car. Anda dapat meneruskan berbagai implementasi Engine ke Car. Misalnya, Anda dapat menentukan subclass Engine baru yang disebut ElectricEngine dan Anda inginkan agar digunakan oleh Car. Jika menggunakan DI, Anda hanya perlu meneruskan instance subclass ElectricEngine yang diperbarui, dan Car akan tetap berfungsi tanpa adanya perubahan lebih lanjut.
  • Pengujian Car secara mudah. Anda dapat meneruskan pengujian ganda untuk menguji skenario yang berbeda. Misalnya, Anda dapat membuat pengujian ganda Engine yang disebut FakeEngine dan mengonfigurasinya untuk pengujian yang lain.
Baca juga  5 Tips Agar Internetan Semakin Kencang di Smartphone Kamu

Ada dua cara utama nih untuk melakukan dependency injection pada Android:

  • Injeksi Konstruktor : Ini adalah cara yang dideskripsikan di atas. Anda meneruskan dependensi class ke konstruktornya.
  • Injeksi Kolom (atau Injeksi Penyetel) : Class framework Android tertentu, seperti aktivitas dan fragmen, dibuat instance-nya oleh sistem, sehingga injeksi konstruktor tidak dapat dilakukan. Dengan injeksi kolom, dependensi akan dibuat instance-nya setelah class dibuat. Kodenya akan terlihat seperti ini:

Keuntungan Pemakaian Dependency Injection

Nah,  di Android juga ada library-library pendukung untuk DI seperti: Dagger, RoboGuice, ButterKnife, Android Annotation, Koin, dan lain-lain.

Saat ini gw lagi suka pakai Hilt karena pemakaiannya yang sederhana dan bisa dibilang mudah.

Hilt adalah library yang direkomendasikan Jetpack untuk injeksi dependensi di Android. Hilt mendefinisikan cara standar untuk melakukan DI dalam aplikasi Anda dengan menyediakan container untuk setiap class Android dalam project Anda dan mengelola siklus prosesnya secara otomatis untuk Anda. Hilt ditambahkan pada library DI yang populer Dagger untuk mendapatkan manfaat dari ketepatan waktu kompilasi, performa runtime, skalabilitas, dan dukungan Android Studio yang disediakan oleh Dagger. Jika kalian ingin mempelajari lebih lanjut tentang Hilt, lihat Injeksi Dependensi dengan Hilt.

Baca juga  6 Hal Untuk Menghindari Kesalahan dalam Memilih Smartphone Android

Jadi kesimpulan yang bisa diambil dari pembahasaan ini adalah :

  • Penggunaan DI dapat memaksimalkan penggunaan class dan pemisahaan depedency atau sederhanya kode dapat digunakan kembali atau re-use.
  • Jika kalian membuat unit test, teknik ini cocok untuk diimplementasikan karena akan sangat membantu.
  • DI juga memudahkan dalam pemfaktoran ulang, dependensi menjadi bagian permukaan API yang dapat diverifikasi, sehingga dapat diperiksa pada waktu pembuatan objek atau pada waktu kompilasi, bukan disembunyikan sebagai detail implementasi.

Mungkin itu dulu yang bisa gw jelaskan tentang Depedency Injection.

Semoga bermanfaat untuk sobat koding semua, thank you

See you…

Digstraksi adalah Media User-Generated, Semua karya tulis sepenuhnya adalah tanggung jawab penulis. Kamu juga bisa mempublikasikan karya tulis & mendapatkan kompensasi berupa uang tunai, pelajari Di sini.

silverTaurus11