Android - porovnání aplikací - moje hodinovka - mvvm kotlin

Prepísanie celej mobilnej aplikácie na Android

Nedávno sme vydali novú verziu (2.4.0) našej populárnej mobilnej aplikácie na Android – Moja hodinovka. Čo je mobilná aplikácia, ktorá vám pomáha so zápisom vašej dochádzky. A pretože sa jedná o prípad, kedy sme celú mobilnú aplikáciu prepísali do novej štruktúry a aj nového jazyka, tak sa s vami chceme podeliť o zaujímavé postrehy. Len aby bolo jasné, tak porovnávame verzie aplikácie, ktoré sú z 99% rovnaké z hľadiska funkčnosti, takže sa jedná o ideálny prípad na porovnanie.

Pôvodná aplikácia

Android Jetpack
Android Jetpack
zdroj: https://developer.android.com/jetpack

Moja hodinovka bola pôvodne písaná ako aplikácia pre náš blízky okruh používateľov a neuvažovalo sa, že by ju používalo tisíce používateľov tak, ako je to dnes. Takže jej štruktúra bola najjednoduchšia možná a neboli použité žiadne architektúry pre väčšie či dlhšie udržiavané aplikácie. Aj jazyk aplikácie bol v tom čase jediný a to Java. A toto si všetko niesla aplikácia od roku 2019, kedy vznikla. Postupom času Google predstavoval nové možnosti pre vývoj na Android a to ako nový jazyk Kotlin alebo nové baličky ako napríklad Android Jetpack.

Nová aplikácia

Takže pre tento rok sme sa rozhodli celú aplikáciu prepísať ako do nového jazyka Kotlin, tak pomocou všetkých odporúčaných postupov a knižníc, ktoré aktuálne Google odporúča. Ako „hlavný“ balík odporúčaní od Google je Android Jetpack – čo je napríklad použitie architektúry M-V-VM alias Model – View – ViewModel – alebo rozdelenie aplikácia na časť, ktorá sa týka dát (model), potom grafické časti – niekedy tiež ako UI (view) a potom ViewModel ako spojovací prvok , ktorý uchováva dáta pre View a pracuje s dátami z časti Model. Ďalšia časť z odporúčaného balíčka bol Hilt, čo je Dependency Injection a nasledovník Daggeru. Hilt veľmi dobre funguje v kombinácii s MVVM a taktiež generuje kód, ktorý by si inak musel developer sám napísať, takže veľmi príjemné zjednodušenie práce pri tvorbe mobilnej aplikácie na Android. Potom už len skratkovito ďalšie odporúčané „knižnice“ ako Room pre DB, LiveData, ViewBinding a atď. Všetky informácie o Android Jetpack nájdete na oficiálnych stránkach https://developer.android.com/jetpack.

Ako teraz porovnať mobilné aplikácie?

Mohli by sme urobiť asi „primitívne“ sčítanie súborov a riadkov kódu, ale to by asi nebolo úplne to pravé, aj keď svoju hodnotu to tiež má. Ale hľadali sme „lepší“ spôsob, ako porovnať starú a novú mobilnú aplikáciu. Našli sme projekt SCC (Succinct Code Counter), ktorý dokáže vytiahnuť rôzne štatistiky z kódu a to ako už spomínané spočítanie riadkov a súborov, tak aj aj nejakú komplexitu kódu alebo jeho náročnosť. Viac o projekte na https://github.com/boyter/scc.

Na obrázku nižšie môžeme vidieť jednotlivé štatistiky, ktoré nám nástroj SCC ponúka a vždy vyobrazí akú hodnotu získala stará aplikácia (Old) a koľko nová (New).

Moja hodinovka - mobilné aplikácie - android - scc - porovnanie
Porovnanie aplikácií pomocou nástroja SCC

Vždy sa porovnávajú jednotlivé typy súborov, takže XML, Java a Kotlín vzlášť. Hlavný rozdiel je medzi Javou a Kotlinom, kde vidíme, že je v podstate vo všetkých parametroch „lepší“ Kotlin. Tzn. že Kotlin je ako úspornejší na počet riadkov, tak aj na jeho komplexitu. Čo potom má za následok, že nástroj sa pomocou metódy COCOMO (Constructive Cost Model viac o metóde napr. na wiki – https://en.wikipedia.org/wiki/COCOMO ) snaží odhadnúť prácnosť projektu a to ako z hľadiska času (ako dlho by trvalo daný kód napísať), tak aj napríklad koľko by mohol stáť. Nechajme bokom konkrétne hodnoty, ktoré môžu byť rozporuplné, ale skôr relatívne hodnotenie. Tzn. že z hľadiska nákladu by napísať novú aplikáciu bolo lacnejšie o 20% ao cca 10% rýchlejšie. A tým, že vieme, že sa z hľadiska funkcie jedná o totožné aplikácie, vychádza že použitie moderných postupov a jazykov je možné písať mobilné aplikácie lacnejšie a rýchlejšie.

Pokiaľ by ste chceli vyvinúť mobilnú aplikáciu na android, tak neváhajte a napíšte nám napr. na e-mail hello@visionslabs.io a spoločne už niečo vymyslíme.

Mobilná aplikácia, Nezaradené, Zaujímavosti
Android, Android Jetpack, Google, Hilt, Java, Kotlin, LiveData, Moje hodinovka, MVVM, Room, SCC
Support portál na WordPresse
WordPress 6.0 prichádza