Logo HuTor Tech HuTor Tech
← Všetky články

· hutor.tech

Ako previesť Android aplikáciu z Javy na Kotlin

Ako previesť Android aplikáciu z Javy na Kotlin

Kotlin a Java žijú v jednom projekte bez problémov — a to je najužitočnejší fakt o tejto migrácii: nemusí prebehnúť naraz a nemusí prebehnúť všade. Aplikácia sa dá vydať po každom kroku a práve to robí prácu bezpečnou.

Najprv pripravte pôdu. Aktuálny Android Gradle Plugin, zapojený Kotlin plugin v súboroch zostavenia a zelený build na stroji, ktorý zostavuje vydania, nielen na notebooku. Ak v projekte nie sú testy vôbec, napíšte zopár okolo toho, čo rozhoduje o peniazoch alebo dátach, ešte pred zásahom do kódu — o ne sa budete opierať celú migráciu.

Potom prevádzajte v poradí, ktoré drží riziko nízko:
— začnite dátovými triedami a drobnými utilitami, kde je prevod mechanický a rozdiel sa dobre číta;
— potom repozitáre a sieťovú vrstvu;
— potom view modely a prezentéry;
— obrazovky a všetko, čo sa dotýka životného cyklu frameworku, nechajte nakoniec.

„Convert Java File to Kotlin File“ v Android Studiu spraví mechanickú časť, ale jeho výstup nikdy neberte ako hotový. Všetky typy prichádzajúce z Javy označí ako platformové, čím ticho vypne presne tú null-bezpečnosť, kvôli ktorej ste do toho išli. Prejdite prevedený súbor a pri každom poli rozhodnite, čo naozaj môže byť null — a napíšte to do typu. Práve v tomto prechode je väčšina úžitku z celej migrácie.

Zopár vecí konvertor spraví syntakticky správne a významovo nesprávne: `lateinit` na poliach, ktoré by lepšie boli parametrom konštruktora; nullable typy „pre istotu“; `!!` tam, kam patrí poriadna kontrola; companion object namiesto toho, čo boli statické pomocníky a dnes by mohli byť funkcie najvyššej úrovne.

Keď je vrstva v Kotline, používajte to, čo jazyk ponúka, namiesto písania Javy v syntaxi Kotlinu: korutiny namiesto reťazcov callbackov a `AsyncTask`, dátové triedy namiesto ručne písaných `equals`, sealed triedy pre stav obrazovky, rozširujúce funkcie namiesto vreca statických metód v `Utils`.

Do konca sa držte dvoch pravidiel. Každý commit necháva aplikáciu zostaviteľnú a vydateľnú — žiadne polovične prevedené vetvy žijúce týždne. A zmiešaný projekt je úplne dobrý koncový stav: ak je modul v Jave stabilný, zrozumiteľný a málokedy sa mení, jeho prevod neprinesie nič okrem rizika. Zmyslom migrácie je bezpečnejší kód tam, kde sa mení, nie zelený odznak Kotlinu na repozitári.