Dobici:
- Dobivanje koda koji je jednostavan za održavanje i koji se može testirati nametanjem arhitekture kao što je MVVM i zahtjevom sloj po sloj u malim dijelovima prije nego što umjetna inteligencija generiše kod.
- Sposobnost prepoznavanja zamki specifičnih za jezik kao što su null sigurnost i korutina u Kotlinu, opcione i memorijske petlje u Swiftu, i provjeravanje generiranog koda u odnosu na njih.
- Mogućnost provjere dozvola i konfiguracije zasebno za svaku platformu u projektima na više platformi (Flutter, React Native)
Srce mobilnog razvoja je kod, i tu se pojavljuju najopipljivije koristi od AI. Ali rečenica "Neka AI napiše kod za mene" nije strategija za sebe. Dobra generacija koda; Zahteva kombinovanje pravog jezika, prave arhitekture, pravih granica i prave validacije. U ovoj jedinici ćemo naučiti kako efikasno i sigurno koristiti AI za Swift, jezik iOS-a, Kotlin, jezik Androida i višeplatformske alate koji rade na dvije platforme s jednom osnovom koda. Cilj je pozicionirati AI ne kao „automat koda“, već kao akcelerator čiju arhitekturu sami odredite.
Prvo arhitektura, drugi kod
Najčešća greška je da se od AI zatraži kod direktno bez arhitektonskog plana. Ovo je kao da gradite zid bez postavljanja temelja. Najčešća arhitektura na mobilnim uređajima je MVVM (Model-View-ViewModel — obrazac dizajna koji razdvaja podatke, ekran i logiku ekrana). To znači da je pogled samo pogled, logika i stanje žive u ViewModel-u, a podaci su u sloju modela. Ako ne nametnete ovo razdvajanje AI-u od samog početka, on proizvodi strukturu koja se ne može testirati i koja se teško održava, koja ugura svu logiku u ekranski kod.
Tok generiranja zdravog koda korak po korak:
- Dajte kontekst. Platforma, jezik, verzija, arhitektura, korištene biblioteke.
- Pitajte za slojeve. Prvo model podataka, zatim sloj mreže/podataka, zatim ViewModel, na kraju ekran.
- Zatražite male komade. Jedan ekran ili jedna funkcija; To nije gigantski fajl od 500 redova.
- Provjerite svaki komad. Izgradite, testirajte, integrirajte; zatim pređite na sljedeću pjesmu.
- Zatražite refaktor (poboljšajte kod). "učinite ovaj korak čitljivijim i provjerljivijim" nakon radnog koda.
Savjet: Recite AI-u da "podijeli kod prema MVVM-u: koji dio bi trebao biti View, koji bi trebao biti ViewModel, koji bi trebao biti Model, dajte ih odvojeno". Ova pojedinačna rečenica dramatično poboljšava arhitektonski kvalitet generiranog koda.
Kotlin i Swift: razmatranja specifična za jezik
Kotlin (Android) i Swift (iOS) su moderni, sigurni jezici, ali imaju različite zamke. U Kotlinu, null sigurnost (provjera da li varijabla može biti "null" preko sistema tipova) ponekad labavo otkucava AI; nepotrebno!! operator (znak koji prisiljava pad ako je null) može srušiti aplikaciju. U Swiftu, opcioni ciklusi upravljanja i zadržavanja su kritični; AI može zaboraviti dodati [slabo ja] u zatvarače i to će stvoriti curenje memorije.
Dakle, kada odaberete jezik, usavršite upit u skladu s tim: poput "Sačuvaj nultu sigurnost u Kotlinu, ne koristi !!" ili "Spriječite jaku petlju referenci u zatvaranjima u Swiftu".
Oprez: Asinhroni kod proizveden AI zahtijeva posebnu pažnju. Odabir pogrešnog opsega u Kotlin korutinama ili blokiranje glavne niti u async/await u Swiftu će zamrznuti aplikaciju. AI često pravi ove greške; Ne vjerujte bez testiranja.
Razvoj na više platformi: Flutter i React Native
Za one koji žele da pređu na iOS i Android sa jednom bazom koda, izdvajaju se Flutter (Google-ov komplet alata zasnovan na Dart jeziku) i React Native (Meta rešenje zasnovano na JavaScriptu). AI je moćan i u ovim okruženjima, ali ponekad zaobilazi razlike platforme (dozvole, pravila trgovine, ponašanje specifično za uređaj). Na primjer, u Flutteru, dozvola za kameru je definirana u različitim datotekama na iOS-u i Androidu; AI može napisati samo jednu. U kodu za više platformi, bitno je reći "dodijeli potrebne dozvole i konfiguraciju za obje platforme odvojeno".
Izborni sažetak:
Pristup
kada
pažnju sa AI
Native (Kotlin/Swift)
Najveće performanse, duboka integracija uređaja
Svaka platforma ima poseban kod; provjeriti dvaput
Flutter
Jedan tim, brzo, dosljedno korisničko sučelje
Ručno provjerite dozvole/postavke specifične za platformu
React Native
Web/JS tim dostupan
Pažljivo testirajte sekcije mosta (prirodnog mosta).
tri mini kofera
Slučaj 1 — Korutinska zamka. Android tim je dobio funkciju koja izvlači listu proizvoda iz AI. Kod je postavljao mrežni zahtjev u glavnoj niti; Problem se nije pojavio na testnom uređaju, ali na slaboj mreži, aplikacija se zamrznula na 4 sekunde i dala upozorenje ANR (Application Not Responding). Popravljeno je kada je AI rečeno da "radi mrežni posao u IO dispečeru". Lekcija: istovremenost je uvijek kontrolirana.
Slučaj 2 — Curenje memorije. Jedan iOS programer je otkrio da se nakon otvaranja i zatvaranja ekrana generiranog umjetnom inteligencijom 20 puta memorija aplikacije povećala sa 40 MB na 180 MB. Razlog je bio taj što ViewController nije mogao biti obrisan iz memorije zbog nedostatka [slabog selfa] u zatvaranju. Xcodeov memorijski graf je otkrio zamku. Lekcija: memorijski profil je obavezan u nativnom razvoju.
Slučaj 3 — Razlika u platformi. Flutter tim je dobio kod za pristup galeriji od AI, radio je na Androidu, ali se srušio na iOS-u. Razlog je to što opis dozvole biblioteke fotografija (NSPhotoLibraryUsageDescription) nije dodan u datoteku Info.plist; AI je napisao samo Android stranu. To je 15-minutna popravka, ali to bi bilo odbijeno u prodavnici da nije uhvaćeno.
Slaba prompt / Jaka prompt
Slab upit: "Napišite Kotlin kod koji izvlači proizvode iz API-ja."
Snažan prompt: "Generiraj kod za Android/Kotlin koji izvlači listu proizvoda iz REST API-ja.- Mrežni sloj sa retrofitom, suspendovana funkcija- Mrežni posao u Dispatchers.IO; blokiranje glavne niti- MVVM: Repozitorijum -> ViewModel -> UI stanje sa StateFlow- Stanje greške: nema mreže, odvojeno zapečaćeno stanje klase za U5x 4x sigurnost!! Izvezite slojeve kao zasebne datoteke, po 1 rečenicu za objašnjenje."
Snažan prompting sprječava da generirani kod upadne u zamke prethodnih slučajeva.
Predlošci koji se mogu kopirati
Slojeviti proizvodni predložak: "Razvijte [funkciju] za [platformu/jezik]. Proizvedite po redoslijedu: 1) Model podataka (klasa podataka/struktura)2) Mrežni sloj ili sloj izvora podataka3) Repozitorijum4) Model prikaza (upravljanje stanjem)5) Ekran (UI) Izvezite svaki sloj zasebno, dodajte integracijsku napomenu između njih."
Sigurnosni predložak specifičan za jezik (Kotlin): "Pregledajte ovaj Kotlin kod:- Jasno korištenje !! i tipa platforme- Potvrdite opseg korutine i izbor dispečera- Ima li poziva koji blokiraju glavnu nit?[kod]"
Sigurnosni predložak specifičan za jezik (Swift): "Pregledajte ovaj Swift kod:- Rizik od ciklusa zadržavanja u zatvaračima (slab/neposjednik)- Upotreba opcionalnog prisilnog odmotavanja (!)- Težak posao koji treba premjestiti iz glavne niti [kod]"
Predložak kontrole za više platformi: "Navedite sve dozvole, konfiguracije i kod specifičan za platformu potreban za ovu [Flutter/React Native] funkciju i na iOS-u i na Androidu. Navedite zasebne unose Info.plist i AndroidManifest.xml."
Uobičajene greške
- Traženje koda bez nametanja arhitekture. Rezultat: neprovjerljiva struktura koja sve trpa na ekran.
- Pouzdanje bez testiranja istodobnog koda. Blokovi glavne niti i neispravan opseg su najčešći uzroci rušenja.
- Previdjeti upravljanje memorijom. Naročito curenja u iOS zatvaranju; Ne primjećuje se bez uzimanja profila.
- Zaobilazeći razlike platforme. U alatima za više platformi, dozvole i konfiguracija se pišu zasebno na dvije platforme.
- Ne provjeravam verziju biblioteke. AI može predložiti zastarjeli Retrofit/Alamofire API; Provjerite sa službenim dokumentom.
- Izrada jednog divovskog fajla. Nemoguće za održavanje i provjeru; pitaj za slojeve.
Ukratko
Generisanje koda sa AI je moćno kada navedete arhitekturu. Prvo nametnite strukturu kao što je MVVM, zatim zatražite sloj po sloj i u malim dijelovima, kompajlirajte i testirajte svaki dio. Null sigurnost i korutina u Kotlinu, opcione i memorijske petlje u Swiftu zahtijevaju posebnu pažnju. U alatima za više platformi, dozvole i konfiguracija se pišu zasebno za svaku platformu. Jaka prompt unapred govori o jeziku, verziji, arhitekturi i sigurnosnim pravilima specifičnim za jezik; Time se sprječavaju najčešće greške u padu i curenju u proizvodnji.
Zadatak aplikacije
Za ekran sa listom (npr. „listu kontakata“), zatražite kod od AI koristeći „Additive production template“ na platformi koju odaberete (Kotlin ili Swift). Dodajte generirani kod u projekat, kompajlirajte ga i izvršite ove dvije provjere: (1) da li se mrežni/dugi proces izvodi na glavnoj niti, (2) da li je null/opciona sigurnost ispravna? Neka AI riješi problem koji nađete pomoću sigurnosnog predloška specifičnog za jezik.
kontrolna lista
- [ ] Naveo sam arhitekturu (MVVM itd.) prije nego što sam zatražio kod
- [ ] Htio sam to sloj po sloj, u malim komadima
- [ ] Testirao sam da istovremeni kod ne blokira glavnu nit
- [ ] Provjerio sam null/opcionu sigurnost i upravljanje memorijom
- [ ] Provjerio sam dozvole/postavke dvije platforme odvojeno u projektu za više platformi
- [ ] Provjerio sam verzije biblioteke i API potpise iz službene dokumentacije