Добици:
- Добијање кода који се лако одржава и који се може тестирати наметањем архитектуре као што је МВВМ и захтевањем слој по слој у малим деловима пре него што вештачка интелигенција генерише код.
- Способност препознавања замки специфичних за језик, као што су нулта безбедност и корутина у Котлину, опционе и меморијске петље у Свифт-у, и провера генерисаног кода у односу на њих.
- Могућност верификације дозвола и конфигурације засебно за сваку платформу у пројектима на више платформи (Флуттер, Реацт Нативе)
Срце мобилног развоја је код, и ту се појављују најопипљивије користи од АИ. Али реченица „Нека АИ напише код за мене“ није стратегија сама по себи. Добро генерисање кода; То захтева комбиновање правог језика, праве архитектуре, правих граница и праве валидације. У овој јединици ћемо научити како да ефикасно и безбедно користимо вештачку интелигенцију за Свифт, језик иОС-а, Котлин, језик Андроид-а и вишеплатформске алате који раде на две платформе са једном базом кода. Циљ је позиционирати АИ не као „аутомат кода“, већ као акцелератор чију архитектуру сами одредите.
Прво архитектура, други код
Најчешћа грешка је да се од АИ затражи код директно без архитектонског плана. Ово је као да градите зид без постављања темеља. Најчешћа архитектура на мобилним уређајима је МВВМ (Модел-Виев-ВиевМодел — образац дизајна који раздваја податке, екран и логику екрана). То значи да је поглед само поглед, логика и стање живе у ВиевМодел-у, а подаци су у слоју модела. Ако ово раздвајање не наметнете АИ од самог почетка, он производи структуру која се не може тестирати и која се тешко одржава, која угура сву логику у код на екрану.
Ток генерисања здравог кода корак по корак:
- Дајте контекст. Платформа, језик, верзија, архитектура, коришћене библиотеке.
- Питајте за слојеве. Прво модел података, затим слој мреже/података, затим ВиевМодел, последњи екран.
- Затражите мале комаде. Један екран или једна функција; То није огромна датотека од 500 редова.
- Проверите сваки комад. Изградите, тестирајте, интегришите; затим пређите на следећу нумеру.
- Затражите рефактор (побољшајте код). "учините овај корак читљивијим и проверљивијим" након радног кода.
Савет: Реците АИ да „подели код према МВВМ: који део треба да буде Виев, који треба да буде ВиевМодел, који треба да буде Модел, дајте их одвојено“. Ова појединачна реченица драматично побољшава архитектонски квалитет генерисаног кода.
Котлин и Свифт: разматрања специфична за језик
Котлин (Андроид) и Свифт (иОС) су модерни, сигурни језици, али имају различите замке. У Котлину, нулта безбедност (провера да ли променљива може да буде „нулл” преко система типова) понекад лабаво откуцава АИ; непотребно!! оператор (знак који форсира пад ако је нулл) може срушити апликацију. У Свифт-у, опциони циклуси управљања и задржавања су критични; АИ може заборавити да дода [слабо ја] у затварање и то ће створити цурење меморије.
Дакле, када одаберете језик, усавршите упит у складу са тим: на пример „Сачувајте нулту безбедност у Котлину, не користите !!“ или „Спречите јаку петљу референци у затварањима у Свифт-у“.
Опрез: Асинхрони код произведен АИ захтева посебну пажњу. Одабир погрешног опсега у Котлин корутинама или блокирање главне нити у асинц/аваит у Свифт-у ће замрзнути апликацију. АИ често прави ове грешке; Не верујте му без тестирања.
Развој на више платформи: Флуттер и Реацт Нативе
За оне који желе да пређу на иОС и Андроид са једном базом кода, издвајају се Флуттер (Гоогле-ов комплет алата заснован на Дарт језику) и Реацт Нативе (Мета решење засновано на ЈаваСцрипт-у). АИ је моћан и у овим окружењима, али понекад заобилази разлике платформе (дозволе, правила продавнице, понашање специфично за уређај). На пример, у Флуттер-у, дозвола за камеру је дефинисана у различитим датотекама на иОС-у и Андроид-у; АИ може написати само једну. У коду за више платформи, неопходно је рећи „додели потребне дозволе и конфигурацију за обе платформе одвојено“.
Изборни резиме:
Приступ
када
пажња са АИ
Нативе (Котлин/Свифт)
Највеће перформансе, дубока интеграција уређаја
Свака платформа има посебан код; провери двапут
Флуттер
Један тим, брз, конзистентан кориснички интерфејс
Ручно проверите дозволе/подешавања специфичне за платформу
Реацт Нативе
Веб/ЈС тим доступан
Пажљиво тестирајте секције моста (матични мост).
три мини кофера
Случај 1 — Корутинска замка. Андроид тим је добио функцију која извлачи листу производа из вештачке интелигенције. Код је правио мрежни захтев у главној нити; Проблем се није појавио на уређају за тестирање, али на слабој мрежи, апликација се замрзнула на 4 секунде и дала упозорење АНР (Апплицатион Нот Респондинг). Поправљено је када је АИ речено да „ради мрежни посао у ИО диспечеру“. Поука: истовременост се увек контролише.
Случај 2 — Цурење меморије. Један иОС програмер је открио да се након отварања и затварања екрана генерисаног АИ 20 пута, меморија апликације повећала са 40 МБ на 180 МБ. Разлог је био тај што ВиевЦонтроллер није могао да се обрише из меморије због недостатка [слабог селфа] у затварању. Ксцоде-ов граф меморије открио је замку. Лекција: меморијски профил је обавезан у нативном развоју.
Случај 3 — Разлика у платформи. Флуттер тим је добио код за приступ галерији од АИ, радио је на Андроиду, али је пао на иОС-у. Разлог је то што опис дозволе библиотеке фотографија (НСПхотоЛибрариУсагеДесцриптион) није додат у датотеку Инфо.плист; АИ је написао само Андроид страну. То је 15-минутна поправка, али би то било одбијање продавнице да није ухваћено.
Слаби промпт / Јаки промпт
Слаб упит: „Напишите Котлин код који извлачи производе из АПИ-ја.“
Снажан промпт: „Генериши код за Андроид/Котлин који извлачи листу производа из РЕСТ АПИ-ја.- Мрежни слој са ретрофитом, суспендована функција- Мрежни посао у Диспатцхерс.ИО; блокирање главне нити- МВВМ: Репозиторијум -> ВиевМодел -> УИ стање са СтатеФлов- Стање грешке: нема мреже, одвојено запечаћено стање класе, заштита У5к 4к!! Извезите слојеве као засебне датотеке, по 1 реченица за објашњење."
Снажно подстицање спречава да генерисани код упадне у замке претходних случајева.
Шаблони који се могу копирати
Слојевити производни шаблон: „Развијте [функцију] за [платформу/језик]. Произведите по редоследу: 1) Модел података (класа података/структура)2) Мрежни слој или слој извора података3) Репозиторијум4) Модел приказа (управљање стањем)5) Екран (УИ) Извезите сваки слој посебно, додајте белешку о интеграцији између њих.“
Безбедносни шаблон специфичан за језик (Котлин): „Прегледајте овај Котлин код:- Јасно коришћење !! и типа платформе- Проверите опсег корутине и избор диспечера- Да ли постоје позиви који блокирају главну нит?[код]"
Безбедносни шаблон специфичан за језик (Свифт): „Прегледајте овај Свифт код:- Ризик од циклуса задржавања у затварању (слабо/непоседовано)- Коришћење опционог принудног одмотавања (!)- Тежак посао који треба да се премести из главне нити [код]"
Шаблон контроле за више платформи: „Наведите све дозволе, конфигурације и код специфичан за платформу потребан за ову функцију [Флуттер/Реацт Нативе] и на иОС-у и на Андроид-у. Наведите засебне уносе Инфо.плист и АндроидМанифест.кмл.“
Уобичајене грешке
- Тражење кода без наметања архитектуре. Резултат: непроверљива структура која све ставља на екран.
- Поверење без тестирања истовременог кода. Блокови главне нити и нетачан опсег су најчешћи узроци рушења.
- Превидети управљање меморијом. Нарочито цурења у затварању иОС-а; Није приметно без узимања профила.
- Заобилазећи разлике платформе. У алатима за више платформи, дозволе и конфигурација се пишу одвојено на две платформе.
- Не проверава се верзија библиотеке. АИ може предложити застарели Ретрофит/Аламофире АПИ; Проверите са званичним документом.
- Израда једне џиновске датотеке. Немогуће за одржавање и проверу; питајте за слојеве.
Укратко
Генерисање кода са АИ је моћно када наведете архитектуру. Прво наметните структуру као што је МВВМ, затим захтевајте слој по слој и у малим деловима, компајлирајте и тестирајте сваки део. Нулл безбедност и корутина у Котлину, опционе и меморијске петље у Свифт-у захтевају посебну пажњу. У алатима за више платформи, дозволе и конфигурација се пишу засебно за сваку платформу. Јака промпт унапред говори о језику, верзији, архитектури и безбедносним правилима специфичним за језик; Ово спречава најчешће грешке у паду и цурењу у производњи.
Задатак апликације
За екран са листом (нпр. „листу контаката“), затражите код од АИ користећи „Шаблон за адитивну производњу“ на платформи коју изаберете (Котлин или Свифт). Додајте генерисани код у пројекат, компајлирајте га и извршите ове две провере: (1) да ли се мрежни/дуги процес покреће на главној нити, (2) да ли је нулта/опциона безбедност тачна? Нека АИ реши проблем који нађете помоћу безбедносног шаблона специфичног за језик.
контролна листа
- [ ] Навео сам архитектуру (МВВМ итд.) пре него што сам затражио код
- [ ] Хтео сам то слој по слој, у малим комадима
- [ ] Тестирао сам да истовремени код не блокира главну нит
- [ ] Проверио сам нулл/опциону безбедност и управљање меморијом
- [ ] Проверио сам дозволе/подешавања две платформе одвојено у пројекту за више платформи
- [ ] Верификовао сам верзије библиотеке и АПИ потписе из званичне документације