Sobes.tech
Middle

Projelerinde kod kalitesini nasıl koruyorsun?

sobes.tech yapay zeka

AI'dan gelen yanıt

  • Statik analizörlerinin kullanımı: Detekt ve ktlint gibi araçları kullanıyorum, potansiyel hataları, kod stiline uyumsuzlukları ve code smells'i otomatik olarak tespit etmek için.
  • Kod İncelemeleri: Meslektaşlarım ile karşılıklı kod incelemelerine katılıyorum. Bu, hataları erken aşamada tespit etmeye, bilgi paylaşmaya ve tutarlılığı sağlamaya yardımcı olur.
  • Birim ve Entegrasyon Testleri: Anahtar bileşenler ve iş mantığı için testler yazıyorum, böylece doğru çalıştıklarından emin olabiliyor ve değişiklikler sonrası regresyonları önlüyorum.
  • DI (Bağımlılık Enjeksiyonu): DI kullanıyorum (örneğin, Dagger/Hilt, Koin), test edilebilirliği, modülerliği ve bağımlılık yönetimini geliştirmek için.
  • SOLID İlkeleri: Esnek, kolay bakım yapılabilir ve genişletilebilir bir mimari inşa etmek için SOLID ilkelerini takip etmeye çalışıyorum.
  • Sürekli Entegrasyon/Sürekli Dağıtım (CI/CD): CI/CD boru hatları kuruyorum (Jenkins, GitLab CI, GitHub Actions), her commit sonrası otomatik testler, statik analiz ve derleme çalıştırmak için.
  • Tutarlı Kod Stili: Projede tutarlı bir kodlama stili koruyorum, biçimlendiriciler ve stil kılavuzları kullanıyorum (Kotlin Style Guide, Android Style Guide).
  • Anlaşılır ve Özlü İsimlendirme: Değişkenler, fonksiyonlar ve sınıflar için anlaşılır ve bilgilendirici isimler kullanıyorum.
  • Açık ve Özlü Belgeler: Karmaşık mantık veya belirsiz kararlar için gerekli yerlerde açıklamalar ekliyorum. KDoc, kamu API'leri için.
  • Mimari Kalıplar: Projeyi yapılandırmak ve sorumlulukları ayırmak için uygun mimari kalıplar (MVVM, MVI) kullanıyorum.
  • Değişmez Veri Yapıları: Durum değişiklikleriyle ilgili hataları azaltmak için mümkün olan yerlerde değişmez veri yapıları kullanıyorum.
// Mockito ve JUnit 4 ile örnek bir birim testi
@Test
fun testDataLoadingSuccess() {
    // Düzenleme
    val expectedData = listOf("item1", "item2")
    `when`(mockRepository.getData()).thenReturn(Single.just(expectedData))

    // Eylem
    viewModel.loadData()

    // Doğrulama
    verify(mockRepository).getData()
    assertEquals(expectedData, viewModel.data.value)
    assertEquals(false, viewModel.isLoading.value)
}