Vienība 2 / 11

Mobilā koda ģenerēšana ar mākslīgo intelektu: Kotlin, Swift un vairāku platformu izstrāde

Ieguvumi:

  • Viegli uzturama un pārbaudāma koda iegūšana, uzliekot tādu arhitektūru kā MVVM un pieprasot slāni pa slānim mazos gabaliņos, pirms mākslīgais intelekts ģenerē kodu.
  • Spēja atpazīt valodai raksturīgus slazdus, ​​piemēram, nulles drošību un korutīnu Kotlinā, izvēles un atmiņas cilpas programmā Swift, un pārbaudīt ģenerēto kodu pret tiem.
  • Iespēja pārbaudīt atļaujas un konfigurāciju atsevišķi katrai platformai starpplatformu projektos (Flutter, React Native)

Mobilās izstrādes pamatā ir kods, un tieši šeit parādās visjūtamākie AI ieguvumi. Bet teikums "Ļaujiet AI rakstīt kodu man" nav stratēģija pati par sevi. Laba koda ģenerēšana; Tam ir jāapvieno pareizā valoda, pareizā arhitektūra, pareizās robežas un pareiza apstiprināšana. Šajā nodaļā mēs uzzināsim, kā efektīvi un droši izmantot AI operētājsistēmai Swift — iOS valodai, Kotlin — Android valodai un starpplatformu rīkiem, kas darbojas divās platformās ar vienu koda bāzi. Mērķis ir pozicionēt AI nevis kā “koda automātu”, bet gan kā paātrinātāju, kura arhitektūru jūs nosakāt.

Vispirms arhitektūra, otrajā vietā kods

Visizplatītākā kļūda ir AI lūgt kodu tieši bez arhitektūras plāna. Tas ir kā sienas celtniecība, neieliekot pamatu. Visizplatītākā mobilo ierīču arhitektūra ir MVVM (Model-View-ViewModel — dizaina modelis, kas atdala datus, displeju un displeja loģiku). Tas nozīmē, ka skats ir tikai skats, loģika un stāvoklis darbojas ViewModel, bet dati atrodas modeļa slānī. Ja jūs jau no paša sākuma neuzliekat šo atdalīšanu AI, tas rada nepārbaudāmu un grūti uzturējamu struktūru, kas visu loģiku ievieto ekrāna kodā.

Veselīga koda ģenerēšanas plūsma soli pa solim:

  1. Dodiet kontekstu. Platforma, valoda, versija, arhitektūra, izmantotās bibliotēkas.
  2. Jautājiet slāņiem. Vispirms datu modelis, pēc tam tīkla/datu slānis, pēc tam ViewModel un pēdējais ekrāns.
  3. Jautājiet par maziem gabaliņiem. Viens ekrāns vai viena funkcija; Tas nav milzīgs 500 rindiņu fails.
  4. Pārbaudiet katru gabalu. Veidot, pārbaudīt, integrēt; tad pārejiet uz nākamo ierakstu.
  5. Pieprasiet refaktoru (uzlabojiet kodu). “Padariet šo lasāmāku un pārbaudāmāku” darbību pēc darba koda.
Padoms: pasakiet AI "sadaliet kodu saskaņā ar MVVM: kurai daļai jābūt View, kurai jābūt ViewModel, kurai jābūt modelim, norādiet tās atsevišķi". Šis viens teikums ievērojami uzlabo ģenerētā koda arhitektūras kvalitāti.

Kotlins un Svifta: valodai specifiski apsvērumi

Kotlin (Android) un Swift (iOS) ir modernas, drošas valodas, taču tām ir dažādas nepilnības. Kotlinā AI dažkārt brīvi ievada nulles drošību (pārbaudot, vai mainīgais var būt "null", izmantojot tipa sistēmu); nevajadzīgi!! operators (zīme, kas izraisa avāriju, ja tā ir nulles vērtība), var avarēt lietojumprogrammu. Programmā Swift izvēles pārvaldības un saglabāšanas cikli ir ļoti svarīgi; AI var aizmirst pievienot [vājš sevi] slēgšanā, un tas radīs atmiņas noplūdi.

Tāpēc, izvēloties valodu, attiecīgi uzlabojiet uzvedni: piemēram, "Saglabājiet nulles drošību Kotlinā, nelietojiet !!" vai "Novērst spēcīgu atsauces cilpu aizvērumos Swift".

Uzmanību: mākslīgā intelekta radītajam asinhronajam kodam ir jāpievērš īpaša uzmanība. Izvēloties nepareizu tvērumu Kotlin korutīnās vai bloķējot galveno pavedienu asinhronajā/gaidīšanas programmā Swift, lietojumprogramma tiks iesaldēta. AI bieži pieļauj šīs kļūdas; Neuzticieties tam, nepārbaudot.

Vairāku platformu izstrāde: Flutter un React Native

Tiem, kas vēlas izmantot gan iOS, gan Android, izmantojot vienu koda bāzi, Flutter (Google Dart valodas rīkkopa) un React Native (Meta JavaScript balstītais risinājums) izceļas. AI ir spēcīgs arī šajās vidēs, taču dažreiz tas apiet platformu atšķirības (atļaujas, veikala noteikumi, ierīcei raksturīga darbība). Piemēram, programmā Flutter kameras atļauja ir definēta dažādos iOS un Android failos; AI var uzrakstīt tikai vienu. Starpplatformu kodā ir svarīgi pateikt "piešķirt vajadzīgās atļaujas un konfigurāciju abām platformām atsevišķi".

Vēlēšanu kopsavilkums:

Pieeja

kad

uzmanību ar AI

Dzimtā (Kotlin/Swift)

Augstākā veiktspēja, padziļināta integrācija ierīcē

Katrai platformai ir atsevišķs kods; pārbaudīt divreiz

Plandīšanās

Viena komanda, ātrs, konsekvents lietotāja interfeiss

Manuāli pārbaudiet platformai specifiskās atļaujas/iestatījumus

Reaģēt Native

Pieejama Web/JS komanda

Rūpīgi pārbaudiet tilta (vietējā tilta) daļas

trīs mini futrāļi

1. gadījums — korutīnas slazds. Android komanda ieguva funkciju, kas izvelk produktu sarakstu no AI. Kods veica tīkla pieprasījumu galvenajā pavedienā; Problēma neparādījās testa ierīcē, bet vājajā tīklā lietojumprogramma sastinga uz 4 sekundēm un sniedza ANR (Application Not Responding) brīdinājumu. Tas tika labots, kad AI tika uzdots "veikt tīkla darbu IO dispečerī". Nodarbība: vienlaicīgums vienmēr tiek kontrolēts.

2. gadījums — atmiņas noplūde. iOS izstrādātājs atklāja, ka pēc AI ģenerētā ekrāna atvēršanas un aizvēršanas 20 reizes lietotnes atmiņa palielinājās no 40 MB līdz 180 MB. Iemesls bija tāds, ka ViewController nevarēja dzēst no atmiņas, jo slēgšanā trūkst [vāja sevis]. Xcode atmiņas grafiks atklāja slazdu. Nodarbība: atmiņas profils ir obligāts vietējā attīstībā.

3. gadījums — platformu atšķirība. Flutter komanda ieguva galerijas piekļuves kodu no AI, tas darbojās operētājsistēmā Android, bet avarēja iOS. Iemesls bija tas, ka fotoattēlu bibliotēkas atļaujas apraksts (NSPhotoLibraryUsageDescription) netika pievienots failam Info.plist; AI rakstīja tikai Android pusi. Tas ir 15 minūšu labojums, bet tas būtu bijis veikala noraidījums, ja tas nebūtu notverts.

Vāja uzvedne / spēcīga uzvedne

Vāja uzvedne: "Rakstiet Kotlin kodu, kas izvelk produktus no API."

Spēcīga uzvedne: "Ģenerējiet Android/Kotlin kodu, kas izvelk produktu sarakstu no REST API.- Tīkla slānis ar modernizāciju, aptur funkciju - Tīkla darbs Dispatchers.IO; bloķē galveno pavedienu - MVVM: Repository -> ViewModel -> UI stāvoklis ar StateFlow - Kļūdu stāvokļi: nav tīkla, atsevišķs aizzīmogotās klases stāvoklis tiek izmantots kā 4xx, Export layer!! faili, katrs 1 teikums paskaidro."

Spēcīga uzvedne neļauj ģenerētajam kodam iekļūt iepriekšējo gadījumu slazdos.

Kopējamas veidnes

Slāņaina ražošanas veidne: "Izstrādājiet [funkciju] [platformai/valodai]. Ražojiet secībā:1) Datu modelis (datu klase/struktūra)2) Tīkla vai datu avota slānis3) Repozitorijs4) ViewModel (stāvokļa pārvaldība)5) Ekrāns (UI) Eksportējiet katru slāni atsevišķi, pievienojiet starp tiem integrācijas piezīmi."

Valodai noteiktai drošības veidne (Kotlin):"Pārskatiet šo Kotlin kodu:- Skaidrs !! un platformas tipa lietojums- Pārbaudiet korutīnas tvērumu un dispečera atlasi- Vai ir zvani, kas bloķē galveno pavedienu?[kods]"

Valodai raksturīga drošības veidne (Swift): "Pārskatiet šo Swift kodu:- aizturēšanas cikla risks slēgšanās gadījumā (vājš/nepazīstams pats)- Izvēles piespiedu attīšanas izmantošana (!) - Smags darbs, kas jāpārvieto no galvenā pavediena [kods]."

Vairāku platformu vadības veidne: "Norādiet visas atļaujas, konfigurācijas un platformas specifisko kodu, kas nepieciešams šai funkcijai [Flutter/React Native] gan iOS, gan Android ierīcēs. Nodrošiniet atsevišķus Info.plist un AndroidManifest.xml ierakstus."

Biežas kļūdas

  • Koda pieprasīšana, neuzspiežot arhitektūru. Rezultāts: nepārbaudāma struktūra, kas visu ievieto ekrānā.
  • Uzticēšanās, nepārbaudot vienlaicīgu kodu. Galvenie pavedienu bloki un nepareizs darbības joma ir visizplatītākie avāriju cēloņi.
  • Skats uz atmiņas pārvaldību. Īpaši noplūdes iOS slēgšanā; Bez profila uzņemšanas tas nav pamanāms.
  • Platformu atšķirību apiešana. Vairāku platformu rīkos atļaujas un konfigurācija abās platformās tiek rakstītas atsevišķi.
  • Netiek pārbaudīta bibliotēkas versija. AI var ieteikt novecojušu Retrofit/Alamofire API; Pārbaudiet ar oficiālu dokumentu.
  • Izveido vienu milzīgu failu. Nav iespējams uzturēt un pārbaudīt; lūgt slāņus.

Rezumējot

Koda ģenerēšana ar AI ir jaudīga, ja norādāt arhitektūru. Vispirms uzlieciet tādu struktūru kā MVVM, pēc tam pieprasiet slāni pa slānim un mazos gabaliņos, apkopojiet un pārbaudiet katru gabalu. Īpaša uzmanība jāpievērš nulles drošībai un korutīnai Kotlinā, papildaprīkojumā un atmiņas cilpām Swift. Vairāku platformu rīkos atļaujas un konfigurācija katrai platformai tiek rakstītas atsevišķi. Spēcīgā uzvedne jau iepriekš norāda valodu, versiju, arhitektūru un valodai raksturīgus drošības noteikumus; Tas novērš visbiežāk sastopamās avārijas un noplūdes kļūdas ražošanā.

Lietojumprogrammas uzdevums

Saraksta ekrānam (piem., “kontaktu sarakstam”) pieprasiet kodu no AI, izmantojot izvēlētās platformas (Kotlin vai Swift) “Piedevu ražošanas veidni”. Pievienojiet ģenerēto kodu projektam, kompilējiet to un veiciet šīs divas pārbaudes: (1) vai tīkla/ilgais process darbojas galvenajā pavedienā, (2) vai nulles/izvēles drošība ir pareiza? Lūdziet AI novērst atklāto problēmu, izmantojot valodai atbilstošu drošības veidni.

kontrolsaraksts

  • [ ] Pirms koda pieprasīšanas es norādīju arhitektūru (MVVM utt.).
  • [ ] Es gribēju to slāni pa slānim, mazos gabaliņos
  • [ ] Es pārbaudīju, vai vienlaicīgais kods nebloķē galveno pavedienu
  • [ ] Es pārbaudīju nulles/izvēles drošības un atmiņas pārvaldību
  • [ ] Vairāku platformu projektā es pārbaudīju divu platformu atļaujas/iestatījumus atsevišķi
  • [ ] Es pārbaudīju bibliotēkas versijas un API parakstus no oficiālās dokumentācijas