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)
}