Sobes.tech
Middle

Layihələrinizdə kod keyfiyyətini necə təmin edirsiniz?

sobes.tech Süni İntellekt

AI-dan cavab

  • Statik analizatorların istifadəsi: Detekt və ktlint kimi vasitələrdən istifadə edirəm, potensial səhvləri, kod stilinə uyğun olmayan hallar və code smellsləri avtomatik tapmaq üçün.
  • Kodların nəzərdən keçirilməsi: İş yoldaşlarımla qarşılıqlı kod nəzərdən keçirmələrində iştirak edirəm. Bu, səhvləri erkən mərhələdə aşkar etməyə, bilikləri bölüşməyə və uyğunluğu təmin etməyə kömək edir.
  • Unit və inteqrasiya testləri: Əsas komponentlər və biznes məntiqi üçün testlər yazıram, onların düzgün işlədiyindən əmin olmaq və dəyişikliklərdən sonra geriyə dönüşləri qarşısını almaq üçün.
  • DI (Asılılıqların inyeksiyası): DI-dən istifadə edirəm (məsələn, Dagger/Hilt, Koin), test ediləbilənliyi, modulluluğu və asılılıqları idarə etməyi yaxşılaşdırmaq üçün.
  • SOLID prinsipləri: Elastik, asan dəstəklənən və genişləndirilə bilən memarlıq qurmaq üçün SOLID prinsiplərinə riayət etməyə çalışıram.
  • Davamlı inteqrasiya / davamlı yerləşdirmə (CI/CD): Jenkins, GitLab CI, GitHub Actions kimi pipeline-ləri konfiqurasiya edirəm, hər commitdən sonra testləri, statik analizi və yığmanı avtomatik icra etmək üçün.
  • Kod stilinin ardıcıllığı: Layihədə vahid kodlama stilini saxlayıram, formatlaşdırıcılar və stil rəhbərləri (Kotlin Style Guide, Android Style Guide) istifadə edirəm.
  • Aydın və qısa adlandırma: Dəyişənlər, funksiyalar və sinflər üçün anlaşılan və məlumatlandırıcı adlar istifadə edirəm.
  • Aydın sənədləşdirmə: Çətin məntiq və ya qeyri-adi qərarların izahı üçün lazım olan yerlərdə şərhlər əlavə edirəm. KDoc ictimai API-lər üçün.
  • Memarlıq nümunələri: Layihəni strukturlaşdırmaq və məsuliyyətləri bölmək üçün uyğun memarlıq nümunələrini (MVVM, MVI) tətbiq edirəm.
  • Dəyişməz məlumat strukturları: Mümkün olduqda, vəziyyət dəyişiklikləri ilə əlaqəli səhvləri azaltmaq üçün dəyişməz məlumat strukturlarından istifadə edirəm.
// Mockito və JUnit 4 ilə nümunə birlik testi
@Test
fun testDataLoadingSuccess() {
    // Təşkil
    val expectedData = listOf("item1", "item2")
    `when`(mockRepository.getData()).thenReturn(Single.just(expectedData))

    // Əməliyyat
    viewModel.loadData()

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