Legacy refaktorinq: XML → Compose, Java → Kotlin
Miqrasiya agentin ən çox fayda verdiyi, eyni zamanda ən çox zərər verə biləcəyi sahədir. Fayda — mexaniki çevirmə həcmlidir və insan üçün darıxdırıcıdır. Zərər — səhv miqrasiya compile olur, amma davranışı dəyişdirir.
Rəsmi tövsiyə artımlı (incremental) miqrasiyadır: Compose və View sistemi bir müddət yan-yana yaşayır. İnterop API-ləri məhz bunun üçündür:
- `ComposeView` — mövcud View əsaslı layout-a Composable əlavə etmək.
- `AndroidView` — Compose ekranında View komponenti işlətmək.
- `AndroidViewBinding` — mövcud view binding-i Compose-da işlətmək.
| Miqrasiya addımı | Agentə uyğundurmu | Səbəb |
|---|---|---|
| Ardıcıllığın planlaşdırılması | Qismən — plan rejimində, insan təsdiqi ilə | Biznes prioritetləri agentə məlum deyil |
| Mövcud davranış üçün test yazmaq | Bəli — yüksək dəyər | Mexanikidir, nəticə yoxlanıla bilir |
| Bir ekranın çevrilməsi | Bəli | Dar sahə, test ilə qorunur |
| 20 ekranın bir dəfəyə çevrilməsi | Xeyr | Review imkansız olur, reqressiya səbəbi itir |
| Java → Kotlin avtomatik çevirmə | Xeyr — IDE aləti bunu daha yaxşı edir | Agentin dəyəri çevirmədən *sonrakı* təmizləmədədir |
| Çevirilmiş Kotlin kodunun idiomatikləşdirilməsi | Bəli | Nullability, data class, scope funksiyaları |
Ən vacib qayda: miqrasiya ilə təkmilləşdirməni qarışdırmayın. Agent XML-i Compose-a çevirərkən "bu arada məntiqi də yaxşılaşdırım" meylindədir. Nəticədə PR-da nəyin çevirmə, nəyin dəyişiklik olduğu ayırd edilmir — reqressiya olsa səbəbi tapmaq çətinləşir. Tapşırıqda açıq yazın: "davranışı dəyişmə, yalnız çevir".
Java → Kotlin miqrasiyasında agentin real dəyəri avtomatik çevirmədə deyil — Android Studio-nun öz aləti onu yaxşı edir. Dəyər sonrakı addımdadır: çevirilmiş kod texniki olaraq Kotlin-dir, amma idiomatik deyil.
Tipik təmizləmə işləri:
- Nullability — avtomatik çevirmə hər şeyi
?və!!ilə doldurur. Real null-safety analizi lazımdır. - `data class` — getter/setter-li sinif data class-a çevrilə bilər.
- Scope funksiyaları —
let,apply,alsoilə sadələşdirmə. - Kolleksiya əməliyyatları — döngələr
map,filter,groupByilə əvəzlənə bilər. - `when` — uzun
if-elsezəncirləri.
Bunların hamısı davranışı dəyişmə riski daşıyır, ona görə test qorunması vacibdir.
📚 Mənbələr və sənədlər
- Compose interop API-lərirəsmideveloper.android.com
`ComposeView`, `AndroidView`, `AndroidViewBinding` və artımlı miqrasiya.
- Compose miqrasiya strategiyasırəsmideveloper.android.com
- Plan rejimi və iş axınlarırəsmicode.claude.com