Jednotka 2 / 11

Generovanie mobilného kódu s umelou inteligenciou: Kotlin, rýchly a medziplatformový vývoj

zisky:

  • Získanie ľahko udržiavateľného a testovateľného kódu zavedením architektúry, ako je MVVM, a vyžiadaním vrstvy po vrstve po malých častiach predtým, ako umelá inteligencia vygeneruje kód.
  • Schopnosť rozpoznať pasce špecifické pre jazyk, ako je nulová bezpečnosť a korutín v Kotline, voliteľné a pamäťové slučky v Swift, a porovnať s nimi vygenerovaný kód.
  • Schopnosť overiť povolenia a konfiguráciu samostatne pre každú platformu v projektoch naprieč platformami (Flutter, React Native)

Srdcom mobilného vývoja je kód a tam sa objavujú najhmatateľnejšie prínosy AI. Ale veta „Nechaj AI napísať kód pre mňa“ nie je stratégia sama o sebe. Dobré generovanie kódu; Vyžaduje si to kombináciu správneho jazyka, správnej architektúry, správnych hraníc a správnej validácie. V tejto lekcii sa naučíme, ako efektívne a bezpečne používať AI pre Swift, jazyk iOS, Kotlin, jazyk Android a multiplatformové nástroje, ktoré fungujú na dvoch platformách s jednou kódovou základňou. Cieľom je umiestniť AI nie ako „kódový automat“, ale ako akcelerátor, ktorého architektúru určujete vy.

Najprv architektúra, potom kód

Najčastejšou chybou je požiadať AI o kód priamo bez architektonického plánu. Je to ako postaviť múr bez položenia základov. Najbežnejšou architektúrou na mobilných zariadeniach je MVVM (Model-View-ViewModel – návrhový vzor, ​​ktorý oddeľuje dáta, displej a logiku displeja). To znamená, že pohľad je len pohľad, logika a stav žijú v ViewModel a údaje sú vo vrstve Model. Ak toto oddelenie nezavediete na AI od začiatku, vytvorí sa netestovateľná a ťažko udržiavateľná štruktúra, ktorá vtesná všetku logiku do kódu obrazovky.

Zdravý tok generovania kódu krok za krokom:

  1. Uveďte kontext. Platforma, jazyk, verzia, architektúra, použité knižnice.
  2. Požiadajte o vrstvy. Najprv dátový model, potom sieťová/dátová vrstva, potom ViewModel, posledná obrazovka.
  3. Požiadajte o malé kúsky. Jedna obrazovka alebo jedna funkcia; Nie je to obrovský 500-riadkový súbor.
  4. Skontrolujte každý kus. Stavať, testovať, integrovať; potom prejdite na ďalšiu skladbu.
  5. Požiadajte o refaktor (vylepšenie kódu). "urobte tento krok čitateľnejším a testovateľnejším" po pracovnom kóde.
Tip: Povedzte AI ​​„rozdeľte kód podľa MVVM: ktorá časť by mala byť View, ktorá by mala byť ViewModel, ktorá by mala byť Model, uveďte ich samostatne“. Táto jediná veta dramaticky zlepšuje architektonickú kvalitu generovaného kódu.

Kotlin a Swift: úvahy špecifické pre jazyk

Kotlin (Android) a Swift (iOS) sú moderné, bezpečné jazyky, ale majú rôzne úskalia. V Kotline je nulová bezpečnosť (kontrola, či premenná môže byť „nulová“ prostredníctvom systému typov) niekedy voľne typovaná AI; zbytočné!! operátor (znamenie, ktoré vynúti zrútenie, ak je null) môže zrútiť aplikáciu. V Swift sú kritické voliteľné cykly správy a uchovávania; AI môže zabudnúť pridať [slabé ja] do uzáverov a to spôsobí únik pamäte.

Takže keď si vyberiete jazyk, zdokonaľte výzvu podľa toho: ako "Zachovajte nulovú bezpečnosť v Kotline, nepoužívajte !!" alebo „Zabrániť silnému zacykleniu referencií v uzáveroch v Swifte“.

Upozornenie: Asynchrónny kód vytvorený AI si vyžaduje osobitnú pozornosť. Výber nesprávneho rozsahu v coroutines Kotlin alebo zablokovanie hlavného vlákna v async/wait v Swift zamrazí aplikáciu. AI robí tieto chyby často; Bez testovania tomu neverte.

Vývoj naprieč platformami: Flutter a React Native

Pre tých, ktorí chcú prejsť na iOS aj Android s jedinou kódovou základňou, vynikajú Flutter (súprava nástrojov Google Dart založená na jazyku) a React Native (riešenie Meta od spoločnosti JavaScript). Umelá inteligencia je výkonná aj v týchto prostrediach, ale niekedy obchádza rozdiely medzi platformami (povolenia, pravidlá obchodu, správanie špecifické pre zariadenie). Napríklad v aplikácii Flutter je povolenie fotoaparátu definované v rôznych súboroch v systémoch iOS a Android; AI môže napísať iba jeden. V kóde pre viacero platforiem je nevyhnutné povedať „udeľte potrebné povolenia a konfiguráciu pre obe platformy samostatne“.

Zhrnutie volieb:

Prístup

kedy

pozornosť s AI

Natívne (Kotlin/Swift)

Najvyšší výkon, integrácia do hĺbky zariadenia

Každá platforma má samostatný kód; overiť dvakrát

Flutter

Jeden tím, rýchle a konzistentné používateľské rozhranie

Manuálne skontrolujte povolenia/nastavenia špecifické pre platformu

Reagovať Native

Web/JS tím k dispozícii

Starostlivo otestujte časti mosta (natívneho mosta).

tri mini prípady

Prípad 1 – Korutínová pasca. Tím Android dostal funkciu, ktorá stiahne zoznam produktov z AI. Kód robil sieťovú požiadavku v hlavnom vlákne; Na testovacom zariadení sa problém neprejavil, no na slabej sieti aplikácia na 4 sekundy zamrzla a vydala upozornenie ANR (Application Not Responding). Bolo to opravené, keď bolo AI ​​povedané, aby „vykonala sieťovú prácu v IO dispečerovi“. Ponaučenie: súbežnosť je vždy kontrolovaná.

Prípad 2 – Únik pamäte. Vývojár iOS zistil, že po 20-násobnom otvorení a zatvorení obrazovky vygenerovanej AI sa pamäť aplikácie zväčšila zo 40 MB na 180 MB. Dôvodom bolo, že ViewController nebolo možné vymazať z pamäte kvôli chýbajúcemu [slabému ja] v uzávere. Pamäťový graf Xcode odhalil pascu. Poučenie: pamäťový profil je povinný pri natívnom vývoji.

Prípad 3 – Rozdiel platformy. Tím Flutter získal prístupový kód do galérie od AI, fungovalo to v systéme Android, ale zlyhalo v systéme iOS. Dôvodom bolo, že popis povolenia knižnice fotografií (NSPhotoLibraryUsageDescription) nebol pridaný do súboru Info.plist; AI napísala iba stranu Androidu. Je to 15 minútová oprava, ale ak by ju nezachytili, bolo by to odmietnutie obchodu.

Slabá výzva / Silná výzva

Slabá výzva: "Napíšte kód Kotlin, ktorý stiahne produkty z API."

Výkonná výzva: "Vygenerujte kód pre Android/Kotlin, ktorý stiahne zoznam produktov z REST API.- Sieťová vrstva s dodatočným vybavením, funkcia pozastavenia- Sieťová úloha v Dispatchers.IO; blokovanie hlavného vlákna- MVVM: Úložisko -> ViewModel -> Stav používateľského rozhrania s StateFlow- Chybové stavy: žiadna sieť, samostatný stav zapečatenej triedy zabezpečenia pre 4xx, 5x súbory !!x-Exportovať !! Každá 1 veta vysvetľuje."

Silné výzvy bránia tomu, aby sa vygenerovaný kód dostal do pascí predchádzajúcich prípadov.

Kopírovateľné šablóny

Vrstvená produkčná šablóna: "Vyvíjajte [funkciu] pre [platformu/jazyk]. Produkujte v poradí:1) Dátový model (údajová trieda/štruktúra)2) Sieťová vrstva alebo vrstva zdroja údajov3) Úložisko4) ViewModel (správa stavu)5) Obrazovka (UI)Exportujte každú vrstvu samostatne, pridajte medzi ne poznámku o integrácii.“

Šablóna zabezpečenia špecifická pre daný jazyk (Kotlin): "Skontrolujte tento kód Kotlin:- Jasné použitie !! a typu platformy- Overte rozsah Coroutine a výber dispečera- Existujú hovory blokujúce hlavné vlákno?"[kód]“

Šablóna zabezpečenia špecifická pre daný jazyk (Swift): "Prečítajte si tento kód Swift:- Riziko cyklu uchovávania v uzáveroch (slabé/nevlastnené)- Použitie voliteľného núteného rozbaľovania (!)- Náročná práca, ktorú je potrebné presunúť z hlavného vlákna [kód]“

Šablóna ovládania viacerých platforiem: "Uveďte všetky povolenia, konfigurácie a kód špecifický pre platformu vyžadovaný pre túto funkciu [Flutter/React Native] v systémoch iOS aj Android. Poskytnite samostatné položky Info.plist a AndroidManifest.xml."

Časté chyby

  • Žiadosť o kód bez uloženia architektúry. Výsledok: netestovateľná štruktúra, ktorá vtesná všetko na obrazovku.
  • Dôverovať bez testovania súbežného kódu. Bloky hlavného vlákna a nesprávny rozsah sú najčastejšími príčinami zlyhaní.
  • Prehliadajúc správu pamäte. Najmä úniky v uzáveroch iOS; Bez vytvorenia profilu to nie je viditeľné.
  • Obchádzanie rozdielov medzi platformami. V multiplatformových nástrojoch sú povolenia a konfigurácia napísané oddelene na dvoch platformách.
  • Verzia knižnice sa neoveruje. AI môže navrhnúť zastarané API Retrofit/Alamofire; Overte si to v oficiálnom dokumente.
  • Výroba jedného obrovského súboru. Nemožno udržiavať a overovať; požiadať o vrstvy.

V súhrne

Generovanie kódu pomocou AI je výkonné, keď špecifikujete architektúru. Najprv vytvorte štruktúru ako MVVM, potom požiadajte vrstvu po vrstve a po malých kúskoch zostavte a otestujte každý kus. Nulová bezpečnosť a korutín v Kotline, voliteľné a pamäťové slučky v Swifte si vyžadujú osobitnú pozornosť. V multiplatformových nástrojoch sú povolenia a konfigurácia napísané samostatne pre každú platformu. Silná výzva vopred oznámi jazyk, verziu, architektúru a bezpečnostné pravidlá špecifické pre daný jazyk; Tým sa zabráni najčastejším chybám zrútenia a úniku vo výrobe.

Aplikačná úloha

Na obrazovke so zoznamom (napr. „zoznam kontaktov“) si vyžiadajte kód od AI pomocou „Šablóny aditívnej výroby“ na platforme, ktorú si vyberiete (Kotlin alebo Swift). Pridajte vygenerovaný kód do projektu, skompilujte ho a vykonajte tieto dve kontroly: (1) beží sieť/dlhý proces na hlavnom vlákne, (2) je správna nulová/voliteľná bezpečnosť? Nechajte AI vyriešiť problém, ktorý nájdete, pomocou šablóny zabezpečenia pre konkrétny jazyk.

kontrolný zoznam

  • [ ] Pred vyžiadaním kódu som špecifikoval architektúru (MVVM atď.).
  • [ ] Chcel som to vrstvu po vrstve, na malé kúsky
  • [ ] Testoval som, že súbežný kód neblokuje hlavné vlákno
  • [ ] Skontroloval som nulovú/voliteľnú bezpečnosť a správu pamäte
  • [ ] Overil som povolenia/nastavenia dvoch platforiem samostatne v multiplatformovom projekte
  • [ ] Verzie knižníc a podpisy API som overil z oficiálnej dokumentácie