Dagger'dan Hilt'e Geçiş - Buna değer mi?

Hilt, Android'de (DI) standartlaştırmanın bir yolu olarak Haziran 2020'de piyasaya sürüldü. Yeni projeler için Hilt, derleme zamanı doğruluğu, çalışma zamanı performansı ve ölçeklenebilirlik sağlar. (Bununla ilgili daha fazla bilgiyi buradan okuyun)! Bununla birlikte, zaten Dagger kullanan bir uygulamanın faydaları nelerdir? Mevcut uygulamanızı Hilt'e taşımanız gerekir mi? Aşağıda, ekibinizin Dagger'dan Hilt'e geçiş için yatırım yapıp yapmaması gerektiğinin bazı nedenleri yer almaktadır.
Halihazırda ViewModels veya WorkManager ile çalışan Dagger'ınız varsa, ViewModelFactory ve WorkerFactory'nizi kablolamanın oldukça fazla standart kod ve Dagger bilgisi gerektirdiğini gördünüz. En yaygın uygulama, Dagger'ın geliştiricilerin genellikle anlamakta zorlandığı en karmaşık özelliklerden biri olan çoklu bağlantıları kullanır. Hilt, bu standart kodu kaldırarak AndroidX ile çalışmayı çok daha kolaylaştırır. Daha da iyisi, Android çerçeve sınıfında Fabrikayı enjekte etmenize bile gerek kalmaması, Hilt yokmuş gibi adlandırmanızdır.

@ViewModelInject ile Hilt, sizin için @AndroidEntryPoint etkinliklerinin ve parçalarının doğrudan kullanabileceği doğru ViewModelProvider.Factory'yi oluşturur.


class GameViewModel @ViewModelInject constructor(
  val db: GameDatabase,
) : ViewModel() { ... }
  
@AndroidEntryPoint
class GameActivity : AppCompatActivity() {
  val viewModel: GameViewModel by viewModels()
  override fun onCreate(savedInstanceState: Bundle) {
    super.onCreate(bundle)
    viewModel.play()
  }
}


DI'nin testi kolaylaştırması açık şekilde gözükmektedir. Dagger'ın testlerde çalışması çok fazla çalışma gerektirir. Hem prod hem de Dagger grafiğini aynı anda test etmeniz gerektiği gerçeği, onu Hilt'in yaklaşımından çok daha kötü hale getiriyor.
Unit testleri, @UninstallModules işlevini kullanarak DI grafiğini açıkça değiştirebilir. Bunun dışında, testlerinizin alanlarını DI grafiğine kolayca bağlamanıza izin veren @BindValue gibi başka avantajlar da elde edersiniz.

Dagger'da aynı işlevselliğe sahip olmanın birden çok yolu vardır. Android uygulamaları için tarihsel rehberlik eksikliği (geçen yıl ele aldığımız) toplulukta çok sayıda tartışmaya neden oldu ve sonuçta geliştiricilerin Android uygulamalarında Dagger'ı kullanma ve kurma biçiminde tutarsızlıklar yarattı.
Mevcut Dagger kurulumunuzun gerçekten iyi olduğunu ve her şeyin nasıl çalıştığını ve her şeyin nasıl enjekte edildiğini mükemmel bir şekilde bildiğinizi iddia edebilirsiniz. Bu nedenle, Hilt'e göç etmeye değmez! Bu sizin durumunuzda doğru olabilir, ancak ekibin geri kalanı (ve potansiyel olarak gelecekteki meslektaşlar) için aynı mı? Yeni bir projeye geçtiğinizde her şeyin nasıl çalıştığını biliyor musunuz? Bir uygulamada Dagger'ın kurulumunu ve kullanımını anlamak zor ve zaman alıcı olabilir.

Aynı kurulum tüm Hilt uygulamaları tarafından kullanıldığından, uygulamanızda Hilt kullanılarak bu süre önemli ölçüde azaltılabilir. Ekibinize katılan yeni bir geliştirici, Hilt kurulumunuz konusunda şaşırmayacaktır çünkü alıştıklarıyla hemen hemen aynı olacaktır.Tanımlanan standart bileşenlerin yanı sıra, Hilt ayrıca size özel bileşenler oluşturma ve bunları burada daha fazla okuyabileceğiniz hiyerarşiye ekleme yolu sunar. Hilt ve Dagger bir arada kullanabilirsiniz.Bu şekilde aşamalı şekilde Hilte geçiş yapabilirsiniz.

Projenizde bileşen bağımlılığı olmasın istiyor ve kendiniz bağımlılıkları yönetmek istiyorsanız Hilt tavsiye etmiyorum.


Yorum Gönder

0 Yorumlar