Unità 2 / 11

Ġenerazzjoni tal-Kodiċi Mobbli b'Intelliġenza Artifiċjali: Żvilupp Kotlin, Swift u Cross-Platform

Qligħ:

  • Il-ksib ta' kodiċi faċli biex jinżamm u li jista' jiġi ttestjat billi timponi arkitettura bħal MVVM u titlob saff b'saff f'biċċiet żgħar qabel ma l-intelliġenza artifiċjali tiġġenera kodiċi.
  • Kapaċità li tagħraf nases speċifiċi għal-lingwa bħal sigurtà null u coroutine f'Kotlin, loops fakultattivi u tal-memorja f'Swift, u tivverifika l-kodiċi ġenerat kontrihom.
  • Kapaċità li tivverifika l-permessi u l-konfigurazzjoni separatament għal kull pjattaforma fi proġetti multi-pjattaforma (Flutter, React Native)

Il-qalba tal-iżvilupp tal-mowbajl hija l-kodiċi, u hemmhekk jidher l-aktar qligħ tanġibbli mill-AI. Iżda s-sentenza "Ħalli l-AI tikteb il-kodiċi għalija" mhix strateġija waħedha. Ġenerazzjoni tajba tal-kodiċi; Jeħtieġ li tgħaqqad il-lingwa t-tajba, l-arkitettura t-tajba, il-konfini t-tajba, u l-validazzjoni t-tajba. F'din l-unità, se nitgħallmu kif nużaw l-AI b'mod effiċjenti u sikur għal Swift, il-lingwa ta 'iOS, Kotlin, il-lingwa ta' Android, u għodod ta 'cross-platform li jaħdmu fuq żewġ pjattaformi b'bażi ​​ta' kodiċi waħda. L-għan huwa li tpoġġi l-AI mhux bħala "awtomat tal-kodiċi" iżda bħala aċċeleratur li l-arkitettura tiegħu tiddetermina.

Architecture first, code second

L-iżball l-aktar komuni huwa li titlob lill-AI għall-kodiċi direttament mingħajr pjan arkitettoniku. Dan huwa bħall-bini ta 'ħajt mingħajr ma jitqiegħed pedament. L-aktar arkitettura komuni fuq il-mowbajl hija MVVM (Model-View-ViewModel — mudell tad-disinn li jifred id-dejta, il-wiri, u l-loġika tal-wiri). Dan ifisser li l-veduta hija biss dehra, il-loġika u l-istat jgħixu fil-ViewModel, u d-dejta tinsab fis-saff tal-Mudell. Jekk ma timponix din is-separazzjoni fuq l-AI mill-bidu, hija tipproduċi struttura li ma tistax tiġi ttestjata u diffiċli biex tinżamm li tpoġġi l-loġika kollha fil-kodiċi tal-iskrin.

A healthy code generation flow step by step:

  1. Agħti l-kuntest. Pjattaforma, lingwa, verżjoni, arkitettura, libreriji użati.
  2. Staqsi għal saffi. L-ewwel il-mudell tad-data, imbagħad is-saff tan-netwerk/data, imbagħad il-ViewModel, l-aħħar l-iskrin.
  3. Staqsi għal biċċiet żgħar. One screen or one function; It's not a giant 500-line file.
  4. Ivverifika kull biċċa. Ibni, ttestja, tintegra; then move on to the next track.
  5. Request a refactor (improve the code). "tagħmel dan aktar leġibbli u testable" pass wara l-kodiċi tax-xogħol.
Ħjiel: Għid lill-AI "qassam il-kodiċi skont MVVM: liema parti għandha tkun View, li għandha tkun ViewModel, li għandha tkun Mudell, agħtihom separatament". Din is-sentenza waħda ttejjeb b'mod drammatiku l-kwalità arkitettonika tal-kodiċi ġġenerat.

Kotlin u Swift: kunsiderazzjonijiet speċifiċi għal-lingwa

Kotlin (Android) u Swift (iOS) huma lingwi moderni u sikuri, iżda għandhom nases differenti. F'Kotlin, is-sigurtà null (iċċekkjar jekk varjabbli tistax tkun "null" permezz tas-sistema tat-tip) xi drabi tiġi ttajpjata b'mod laxk mill-AI; bla bżonn!! operatur (is-sinjal li jġiegħel ħabta jekk huwa null) jista 'jiġġarraf l-applikazzjoni. F'Swift, iċ-ċikli ta' ġestjoni u żamma fakultattivi huma kritiċi; L-AI tista 'tinsa li żżid [awto dgħajjef] fl-għeluq u dan joħloq tnixxija tal-memorja.

Allura meta tagħżel lingwa, agħfas il-pront kif xieraq: bħal "Ippreserva s-sigurtà nulla f'Kotlin, tużax !!" jew "Prevent strong reference looping in closures in Swift".

Attenzjoni: Kodiċi asinkronu prodott mill-AI jeħtieġ attenzjoni speċjali. L-għażla tal-ambitu żbaljat f'korutini Kotlin jew l-imblukkar tal-ħajt prinċipali f'async/wait f'Swift se tiffriża l-applikazzjoni. AI tagħmel dawn l-iżbalji spiss; Tafdahx mingħajr ma tittestjah.

Żvilupp trans-pjattaforma: Flutter u React Native

Għal dawk li jridu jmorru kemm għall-iOS kif ukoll għall-Android b'bażi ta' kodiċi waħda, jispikkaw Flutter (Google's Dart toolkit ibbażat fuq il-lingwa) u React Native (soluzzjoni bbażata fuq JavaScript ta' Meta). L-AI hija qawwija f'dawn l-ambjenti wkoll, iżda xi drabi tevita d-differenzi tal-pjattaforma (permessi, regoli tal-maħżen, imġieba speċifika għall-apparat). Pereżempju, f'Flutter, il-permess tal-kamera huwa definit f'fajls differenti fuq iOS u Android; The AI ​​can only write one. Fil-kodiċi cross-platform, huwa essenzjali li tgħid "għoti l-permessi meħtieġa u l-konfigurazzjoni għaż-żewġ pjattaformi separatament".

Sommarju tal-elezzjoni:

Approċċ

meta

attenzjoni bl-AI

Nattiv (Kotlin/Swift)

Highest performance, device-deep integration

Each platform has separate code; jivverifika darbtejn

Flutter

One team, fast, consistent UI

Iċċekkja manwalment permess/settings speċifiċi għall-pjattaforma

Irreaġixxi Nattiv

Web/JS tim disponibbli

Ittestja s-sezzjonijiet tal-pont (pont indiġenu) bir-reqqa

tliet każijiet żgħar

Case 1 — Coroutine trap. Tim Android kiseb funzjoni li tiġbed il-lista tal-prodotti mill-AI. Il-kodiċi kien qed jagħmel it-talba tan-netwerk fil-ħajt prinċipali; Il-problema ma dehritx fuq l-apparat tat-test, iżda fuq in-netwerk dgħajjef, l-applikazzjoni ffriżat għal 4 sekondi u tat twissija ANR (Applikazzjoni Mhux Risposta). Ġie ffissat meta l-AI intqal biex "tagħmel ix-xogħol tan-netwerk fid-dispatcher IO". Lesson: concurrency is always controlled.

Każ 2 — Tnixxija tal-memorja. Żviluppatur tal-iOS sab li wara li fetaħ u għalaq skrin iġġenerat mill-AI 20 darba, il-memorja tal-app żdiedet minn 40 MB għal 180 MB. Ir-raġuni kienet li l-ViewController ma setax jitneħħa mill-memorja minħabba [awn dgħajjef] nieqes fl-għeluq. Xcode's memory graph revealed the trap. Lezzjoni: il-profil tal-memorja huwa obbligatorju fl-iżvilupp nattiv.

Case 3 — Platform difference. Tim Flutter kiseb kodiċi ta 'aċċess għall-gallerija minn AI, ħadem fuq Android iżda ġġarraf fuq iOS. Ir-raġuni kienet li d-deskrizzjoni tal-permess tal-librerija tar-ritratti (NSPhotoLibraryUsageDescription) ma ġietx miżjuda mal-fajl Info.plist; AI only wrote the Android side. Huwa soluzzjoni ta '15-il minuta, iżda kien ikun rifjut tal-maħżen li kieku ma nqabadx.

Pront dgħajjef / Pront qawwi

Pront dgħajjef: "Ikteb kodiċi Kotlin li jiġbed prodotti mill-API."

Prompt qawwi: "Iġġenera kodiċi għal Android/Kotlin li jiġbed il-lista tal-prodotti minn REST API.- Saff tan-netwerk b'retrofit, tissospendi l-funzjoni- Xogħol tan-netwerk f'Dispatchers.IO; imblukkar tal-ħajt prinċipali- MVVM: Repository -> ViewModel -> Stat UI bi StateFlow- Żbalji stati: l-ebda netwerk, stat ta 'klassi ssiġillat separat għal fajls separati ta' sigurtà 4xx, 5,xx !! sentenza kull jispjega."

Prompting qawwi jipprevjeni li l-kodiċi ġġenerat jaqa 'fin-nases tal-każijiet preċedenti.

Mudelli kopjabbli

Mudell ta 'produzzjoni f'saffi: "Żviluppa [karatteristika] għal [pjattaforma/lingwa]. Ipproduċi fl-ordni:1) Mudell tad-dejta (klassi tad-dejta/struttura)2) Netwerk jew saff tas-sors tad-dejta3) Repożitorju4) ViewModel (ġestjoni tal-istat)5) Screen (UI)Esporta kull saff separatament, żid nota ta 'integrazzjoni bejniethom."

Mudell ta' sigurtà speċifika għall-lingwa (Kotlin): "Irrevedi dan il-kodiċi Kotlin:- Użu ċar ta' !! u tat-tip ta' pjattaforma- Ivverifika l-ambitu tal-Coroutine u l-għażla tad-dispatcher- Hemm sejħiet li jimblukkaw il-ħajt prinċipali?[kodiċi]"

Mudell ta' sigurtà speċifiku għal-lingwa (Swift): "Irrevedi dan il-kodiċi Swift:- Riskju ta' ċiklu ta' żamma fl-għeluq (awto dgħajjef/mhux proprjetà)- Użu ta' forza-unwrap fakultattiv (!)- Xogħol tqil li jeħtieġ li jitneħħa mill-ħajt prinċipali [kodiċi]"

Mudell ta' kontroll bejn il-pjattaformi: "Elenka l-permessi, il-konfigurazzjonijiet u l-kodiċi speċifiku għall-pjattaforma kollha meħtieġa għal din il-karatteristika [Flutter/React Native] kemm fuq iOS kif ukoll fuq Android. Ipprovdi entrati separati ta' Info.plist u AndroidManifest.xml."

Żbalji komuni

  • Titlob għall-kodiċi mingħajr ma timponi l-arkitettura. Ir-riżultat: struttura li ma tistax tiġi ttestjata li tpoġġi kollox fuq l-iskrin.
  • Fidu mingħajr ttestjar tal-kodiċi konkorrenti. Il-blokki tal-ħajt prinċipali u l-ambitu mhux korrett huma l-aktar kawżi komuni ta 'ħabtiet.
  • Injorat il-ġestjoni tal-memorja. Speċjalment tnixxijiet fl-għeluq tal-iOS; Mhuwiex notevoli mingħajr ma tieħu profil.
  • Bypassing differenzi pjattaforma. F'għodod multi-pjattaformi, il-permessi u l-konfigurazzjoni jinkitbu separatament fuq iż-żewġ pjattaformi.
  • Mhux qed jivverifika l-verżjoni tal-librerija. AI jistgħu jissuġġerixxu Retrofit/Alamofire API skaduti; Iċċekkja mad-dokument uffiċjali.
  • Jipproduċu fajl ġgant wieħed. Impossibbli li tinżamm u tivverifika; ask for layers.

Fil-qosor

Code generation with AI is powerful when you specify the architecture. First impose a structure like MVVM, then request layer by layer and in small pieces, compile and test each piece. Null safety and coroutine in Kotlin, optional and memory loops in Swift require special attention. In cross-platform tools, permissions and configuration are written separately for each platform. The strong prompt tells the language, version, architecture, and language-specific security rules up front; This prevents the most common crash and leak errors in production.

Kompitu ta' applikazzjoni

Għal skrin ta’ lista (eż. “lista ta’ kuntatti”), itlob il-kodiċi mill-AI billi tuża l-“Mudell ta’ manifattura addittiva” fil-pjattaforma tal-għażla tiegħek (Kotlin jew Swift). Żid il-kodiċi ġġenerat ma 'proġett, ikkumpilah, u agħmel dawn iż-żewġ kontrolli: (1) in-netwerk/proċess twil qed jaħdem fuq il-ħajt prinċipali, (2) is-sigurtà nulla/fakultattiva hija korretta? Have the AI ​​fix the issue you find with a language-specific security template.

lista ta' kontroll

  • [ ] I specified the architecture (MVVM etc.) before requesting code
  • [ ] Ridt saff b'saff, f'biċċiet żgħar
  • [ ] I tested that concurrent code does not block the main thread
  • [ ] Iċċekkjt is-sikurezza null/fakultattiva u l-ġestjoni tal-memorja
  • [ ] Ivverifikajt il-permessi/settings ta' żewġ pjattaformi separatament fi proġett ta' cross-platform
  • [ ] Ivverifikajt verżjonijiet tal-libreriji u firem API minn dokumentazzjoni uffiċjali