Pelnas:
- Lengvai prižiūrimo ir patikrinamo kodo gavimas pritaikant tokią architektūrą kaip MVVM ir reikalaujant sluoksnis po sluoksnio mažomis dalimis, prieš tai, kai dirbtinis intelektas generuoja kodą.
- Gebėjimas atpažinti konkrečiai kalbai būdingus spąstus, tokius kaip nulinė sauga ir korutinas Kotlin, pasirenkamas ir atminties kilpas Swift, ir patikrinti sugeneruotą kodą pagal juos.
- Galimybė tikrinti leidimus ir konfigūraciją atskirai kiekvienai platformai kelių platformų („Flutter“, „React Native“) projektuose
Mobiliojo ryšio kūrimo esmė yra kodas, ir čia atsiranda apčiuopiamiausia dirbtinio intelekto nauda. Tačiau sakinys „Leiskite AI parašyti kodą man“ nėra strategija. Geras kodo generavimas; Tam reikia derinti tinkamą kalbą, tinkamą architektūrą, tinkamas ribas ir tinkamą patvirtinimą. Šiame skyriuje išmoksime efektyviai ir saugiai naudoti dirbtinį intelektą „Swift“, „iOS“ kalba, „Kotlin“, „Android“ kalba, ir kelių platformų įrankius, kurie veikia dviejose platformose su viena kodo baze. Tikslas yra pozicionuoti AI ne kaip „kodo automatą“, o kaip greitintuvą, kurio architektūrą nustatote jūs.
Pirmiausia architektūra, antra – kodas
Dažniausia klaida yra paprašyti dirbtinio intelekto kodo tiesiogiai be architektūrinio plano. Tai panašu į sienos statymą nepaklojus pamato. Labiausiai paplitusi architektūra mobiliuosiuose įrenginiuose yra MVVM (Model-View-ViewModel – dizaino modelis, atskiriantis duomenis, ekraną ir ekrano logiką). Tai reiškia, kad vaizdas yra tik vaizdas, logika ir būsena veikia ViewModel, o duomenys yra modelio sluoksnyje. Jei nuo pat pradžių nenustatote šio atskyrimo dirbtiniu intelektu, jis sukuria nepatikrinamą ir sunkiai prižiūrimą struktūrą, kuri visą logiką suspaus į ekrano kodą.
Sveikas kodo generavimo procesas žingsnis po žingsnio:
- Pateikite kontekstą. Platforma, kalba, versija, architektūra, naudojamos bibliotekos.
- Klauskite sluoksnių. Pirmiausia duomenų modelis, tada tinklo / duomenų sluoksnis, tada ViewModel, paskutinis ekranas.
- Paprašykite mažų gabalėlių. Vienas ekranas arba viena funkcija; Tai nėra milžiniškas 500 eilučių failas.
- Patikrinkite kiekvieną gabalą. Sukurti, išbandyti, integruoti; tada pereikite prie kito takelio.
- Prašyti refaktoriaus (patobulinti kodą). Po darbo kodo veiksmas „padarykite tai lengviau skaitomas ir patikrinamas“.
Patarimas: pasakykite AI „padalykite kodą pagal MVVM: kuri dalis turėtų būti View, kuri turėtų būti ViewModel, kuri turėtų būti Modelis, suteikite jas atskirai“. Šis vienas sakinys žymiai pagerina sugeneruoto kodo architektūrinę kokybę.
Kotlin ir Swift: su kalba susiję svarstymai
„Kotlin“ („Android“) ir „Swift“ („iOS“) yra modernios, saugios kalbos, tačiau jos turi skirtingų spąstų. Kotlin, null safety (tikrinama, ar kintamasis gali būti "nulis" per tipo sistemą) kartais AI įvedamas laisvai; nereikalingas!! operatorius (ženklas, verčiantis strigti, jei jis yra nulis) gali sugadinti programą. Swift pasirenkami valdymo ir saugojimo ciklai yra labai svarbūs; AI gali pamiršti pridėti [silpną save] uždarymo elementuose ir tai sukels atminties nutekėjimą.
Taigi, kai pasirenkate kalbą, atitinkamai patobulinkite raginimą: pavyzdžiui, „Preserve null safety in Kotlin, don't use !!“ arba „Užkirsti kelią stiprioms nuorodų kilpoms „Swift“ uždoriuose“.
Atsargiai: dirbtinio intelekto sukurtam asinchroniniam kodui reikia ypatingo dėmesio. Pasirinkus netinkamą apimtį Kotlin korutinėse arba užblokavus pagrindinę giją asinchronizacijoje/laukti programoje „Swift“, programa užšaldys. AI dažnai daro šias klaidas; Nepasitikėkite juo neišbandę.
Kelių platformų kūrimas: „Flutter“ ir „React Native“.
Tiems, kurie nori naudoti „iOS“ ir „Android“ naudodami vieną kodo bazę, išsiskiria „Flutter“ („Google Dart“ kalbos įrankių rinkinys) ir „React Native“ („Meta“ JavaScript pagrįstas sprendimas). AI yra galingas ir šiose aplinkose, tačiau kartais apeina platformų skirtumus (leidimus, parduotuvės taisykles, konkrečiam įrenginiui būdingą elgesį). Pavyzdžiui, „Flutter“ fotoaparato leidimas apibrėžiamas skirtinguose „iOS“ ir „Android“ failuose; AI gali parašyti tik vieną. Kelių platformų kode būtina pasakyti „suteikti reikiamus leidimus ir konfigūraciją abiem platformoms atskirai“.
Rinkimų santrauka:
Prieiga
kada
dėmesio su AI
Gimtoji (Kotlin / Swift)
Didžiausias našumas, gili įrenginio integracija
Kiekviena platforma turi atskirą kodą; patikrinkite du kartus
Plazdėjimas
Viena komanda, greita, nuosekli vartotojo sąsaja
Rankiniu būdu patikrinkite konkrečios platformos leidimus / nustatymus
Reaguoti gimtoji
Yra žiniatinklio / JS komanda
Atidžiai išbandykite tilto (vietinio tilto) dalis
trys mini dėklai
1 atvejis. Korutinos gaudyklė. „Android“ komanda gavo funkciją, kuri iš AI ištraukia produktų sąrašą. Kodas pateikė tinklo užklausą pagrindinėje gijoje; Problema nepasirodė bandomajame įrenginyje, tačiau silpname tinkle programa užstojo 4 sekundes ir davė ANR (Application Not Responding) įspėjimą. Jis buvo ištaisytas, kai AI buvo liepta „atlikti tinklo darbą IO dispečeryje“. Pamoka: lygiagretumas visada kontroliuojamas.
2 atvejis – atminties nutekėjimas. iOS kūrėjas nustatė, kad 20 kartų atidarius ir uždarius dirbtinio intelekto sukurtą ekraną, programėlės atmintis padidėjo nuo 40 MB iki 180 MB. Priežastis buvo ta, kad „ViewController“ nepavyko išvalyti iš atminties, nes trūko [silpno „aš“]. „Xcode“ atminties grafikas atskleidė spąstus. Pamoka: atminties profilis yra privalomas vietiniam vystymuisi.
3 atvejis – platformos skirtumas. „Flutter“ komanda gavo galerijos prieigos kodą iš AI, jis veikė „Android“, bet sudužo „iOS“. Priežastis buvo ta, kad nuotraukų bibliotekos leidimo aprašymas (NSPhotoLibraryUsageDescription) nebuvo įtrauktas į failą Info.plist; AI parašė tik „Android“ pusę. Pataisymas trunka 15 minučių, bet jei nebūtų užfiksuotas, tai būtų buvęs parduotuvės atmetimas.
Silpnas raginimas / Stiprus raginimas
Silpnas raginimas: „Parašykite Kotlin kodą, kuris ištraukia produktus iš API“.
Galingas raginimas: „Sukurkite „Android“ / „Kotlin“ kodą, kuris ištraukia produktų sąrašą iš REST API.- Tinklo sluoksnis su modifikavimu, sustabdymo funkcija- Tinklo užduotis Dispatchers.IO; blokuoja pagrindinę giją- MVVM: saugykla -> ViewModel -> UI būsena su StateFlow- Klaidų būsenos: nėra tinklo, atskira užantspauduota klasės būsena, skirta 4xx !! failus, po 1 sakinį paaiškinkite“.
Stiprus raginimas neleidžia sugeneruotam kodui patekti į ankstesnių atvejų spąstus.
Kopijuojami šablonai
Sluoksniuotas gamybos šablonas: "Sukurkite [funkciją], skirtą [platformai/kalbai]. Gaminkite eilės tvarka:1) Duomenų modelis (duomenų klasė/struktūra)2) Tinklo arba duomenų šaltinio sluoksnis3) Saugykla4) ViewModel (būsenos valdymas)5) Ekranas (UI) Eksportuokite kiekvieną sluoksnį atskirai, tarp jų pridėkite integravimo pastabą.
Konkrečiai kalbai skirtas saugos šablonas (Kotlin): „Peržiūrėkite šį Kotlin kodą: – Aiškus !! ir platformos tipo naudojimas – Patikrinkite korutinos apimtį ir dispečerio pasirinkimą – Ar yra skambučių, blokuojančių pagrindinę giją?[kodas]“
Konkrečiai kalbai skirtas saugos šablonas („Swift“): „Peržiūrėkite šį Swift kodą: – užsidarymo ciklo rizika (silpnas / nepažįstamas) – Pasirenkamas priverstinio išvyniojimo naudojimas (!) – Sunkus darbas, kurį reikia pašalinti iš pagrindinės gijos [kodas]“
Kelių platformų valdymo šablonas: „Išvardykite visus leidimus, konfigūracijas ir konkrečios platformos kodą, reikalingą šiai funkcijai [Flutter/React Native] tiek iOS, tiek Android. Pateikite atskirus Info.plist ir AndroidManifest.xml įrašus.
Dažnos klaidos
- Prašymas kodo neprimetant architektūros. Rezultatas: nepatikrinama struktūra, kuri viską sutalpina į ekraną.
- Pasitikėjimas neišbandžius vienu metu veikiančio kodo. Pagrindiniai gijų blokai ir neteisinga apimtis yra dažniausios gedimų priežastys.
- Atsižvelgiama į atminties valdymą. Ypač nutekėjimai iOS uždarymo vietose; Tai nepastebima nepadarius profilio.
- Apeiti platformų skirtumus. Kelių platformų įrankiuose leidimai ir konfigūracija rašomi atskirai dviejose platformose.
- Nepatvirtina bibliotekos versija. AI gali pasiūlyti pasenusią Retrofit/Alamofire API; Patikrinkite su oficialiu dokumentu.
- Vieno milžiniško failo kūrimas. Neįmanoma prižiūrėti ir patikrinti; prašyti sluoksnių.
Apibendrinant
Kodo generavimas naudojant AI yra galingas, kai nurodote architektūrą. Pirmiausia nustatykite tokią struktūrą kaip MVVM, tada prašykite sluoksnis po sluoksnio ir mažomis dalimis, sukompiliuokite ir išbandykite kiekvieną gabalą. Ypatingo dėmesio reikalauja nulinė sauga ir reguliarumas Kotlin, pasirenkamos ir atminties kilpos Swift. Kelių platformų įrankiuose leidimai ir konfigūracija rašomi atskirai kiekvienai platformai. Stiprus raginimas iš anksto nurodo kalbą, versiją, architektūrą ir konkrečiai kalbai būdingas saugos taisykles; Taip išvengiama dažniausiai pasitaikančių gedimų ir nuotėkio klaidų gamyboje.
Taikymo užduotis
Norėdami gauti sąrašo ekraną (pvz., „kontaktų sąrašą“), paprašykite AI kodo naudodami pasirinktoje platformoje (Kotlin arba Swift) esantį „Priedų gamybos šabloną“. Pridėkite sugeneruotą kodą prie projekto, sukompiliuokite jį ir atlikite šiuos du patikrinimus: (1) ar tinklas / ilgas procesas veikia pagrindinėje gijoje, (2) ar teisinga nulinė / pasirenkama sauga? Leiskite dirbtiniam intelektui išspręsti problemą naudodami konkrečios kalbos saugos šabloną.
kontrolinis sąrašas
- [ ] Prieš prašydamas kodo nurodžiau architektūrą (MVVM ir kt.).
- [ ] Norėjau, kad tai būtų sluoksnis po sluoksnio, mažomis dalimis
- [ ] Išbandžiau, kad vienu metu veikiantis kodas neblokuoja pagrindinės gijos
- [ ] Patikrinau nulinį / pasirenkamą saugos ir atminties valdymą
- [ ] Atskirai patikrinau dviejų platformų leidimus / nustatymus kelių platformų projekte
- [ ] Patikrinau bibliotekos versijas ir API parašus iš oficialios dokumentacijos