Добивки:
- Добивање код кој лесно се одржува и може да се тестира со наметнување архитектура како што е MVVM и барање слој по слој во мали парчиња пред вештачката интелигенција да генерира код.
- Способност да се препознаат стапици специфични за јазикот, како што се нула безбедност и корутина во Котлин, изборни и мемориски циклуси во Swift и проверка на генерираниот код со нив.
- Способност да се проверат дозволите и конфигурацијата одделно за секоја платформа во проекти меѓу-платформски (Flutter, React Native)
Срцето на развојот на мобилни телефони е кодот, и токму тука се појавуваат најопипливите придобивки од вештачката интелигенција. Но, реченицата „Дозволи ми вештачката интелигенција да пишува код за мене“ не е стратегија сама по себе. Добро генерирање на кодови; Потребно е комбинирање на вистинскиот јазик, вистинската архитектура, вистинските граници и вистинската валидација. Во оваа единица, ќе научиме како да користиме вештачка интелигенција ефикасно и безбедно за Swift, јазикот на iOS, Котлин, јазикот на Андроид и алатките за меѓуплатформи кои работат на две платформи со една база на кодови. Целта е да се позиционира вештачката интелигенција не како „автомат за кодови“ туку како забрзувач чија архитектура вие ја одредувате.
Прво архитектура, второ код
Најчеста грешка е да побарате код од вештачката интелигенција директно без архитектонски план. Ова е како градење ѕид без да се постави основа. Најчеста архитектура на мобилниот телефон е MVVM (Model-View-ViewModel — шема на дизајн што ги одвојува податоците, екранот и логиката на екранот). Ова значи дека приказот е само приказ, логиката и состојбата живеат во ViewModel, а податоците се во слојот Model. Ако не го наметнете ова одвојување на вештачката интелигенција од самиот почеток, таа произведува непроверлива и тешко одржувана структура која ја вклопува целата логика во кодот на екранот.
Здрав тек на генерирање кодови чекор по чекор:
- Дајте го контекстот. Платформа, јазик, верзија, архитектура, користени библиотеки.
- Побарајте слоеви. Прво моделот на податоци, потоа слојот мрежа/податоци, потоа ViewModel, последен на екранот.
- Побарајте мали парчиња. Еден екран или една функција; Тоа не е џиновска датотека од 500 линии.
- Потврдете го секое парче. Изградба, тестирање, интегрирање; потоа преминете на следната песна.
- Побарајте рефактор (подобрете го кодот). „направи го овој почитлив и проверлив“ чекор по работниот код.
Совет: Кажете ѝ на вештачката интелигенција „поделете го кодот според MVVM: кој дел треба да биде View, кој треба да биде ViewModel, кој треба да биде Model, дајте ги одделно“. Оваа единствена реченица драматично го подобрува архитектонскиот квалитет на генерираниот код.
Котлин и Свифт: размислувања специфични за јазикот
Kotlin (Android) и Swift (iOS) се модерни, безбедни јазици, но тие имаат различни стапици. Во Котлин, нула безбедноста (проверка дали променливата може да биде „нула“ преку системот на типови) понекогаш е лабаво напишана од ВИ; непотребно!! операторот (знакот што принудува пад ако е нула) може да ја урне апликацијата. Во Swift, опционалните циклуси за управување и задржување се критични; Вештачката интелигенција може да заборави да додаде [слабо јас] во затворачите и тоа ќе создаде истекување на меморијата.
Затоа, кога избирате јазик, соодветно усовршете го барањето: како „Зачувај ја нула безбедноста во Котлин, не користи !!“ или „Спречете ја силната референтна јамка во затворањата во Swift“.
Внимание: асинхрониот код произведен од вештачка интелигенција бара посебно внимание. Изборот на погрешен опсег во корутините на Kotlin или блокирањето на главната нишка во асинхронизирано/чекај во Swift ќе ја замрзне апликацијата. ВИ често ги прави овие грешки; Не верувајте без да го тестирате.
Развој на повеќе платформи: Flutter и React Native
За оние кои сакаат да одат и на iOS и на Android со единствена база на кодови, се издвојуваат Flutter (пакет алатки засновани на јазик на Google Dart) и React Native (решение базирано на JavaScript на Мета). Вештачката интелигенција е моќна и во овие средини, но понекогаш ги заобиколува разликите во платформата (дозволи, правила за складирање, однесување специфично за уредот). На пример, во Flutter, дозволата за камерата е дефинирана во различни датотеки на iOS и Android; ВИ може да напише само еден. Во кодот за повеќе платформи, од суштинско значење е да се каже „додели ги потребните дозволи и конфигурација за двете платформи одделно“.
Резиме на изборите:
Пристап
кога
внимание со вештачка интелигенција
Мајчин (Котлин/Свифт)
Највисоки перформанси, длабока интеграција на уредот
Секоја платформа има посебен код; потврди двапати
Флатер
Еден тим, брз, конзистентен интерфејс
Рачно проверете ги дозволите/поставките специфични за платформата
Реагирајте мајчин
Достапен е тим на веб/JS
Внимателно тестирајте ги деловите на мостот (родниот мост).
три мини футроли
Случај 1 - Корутинска стапица. Андроид тим доби функција која ја повлекува листата на производи од вештачката интелигенција. Кодот го правеше барањето за мрежа во главната нишка; Проблемот не се појави на уредот за тестирање, но на слабата мрежа апликацијата замрзна 4 секунди и даде предупредување ANR (Application Not Responding). Тоа беше поправено кога на вештачката интелигенција и беше кажано да „ја направи мрежната работа во диспечерот на IO“. Поука: истовременоста е секогаш контролирана.
Случај 2 - Протекување на меморија. Развивач на iOS откри дека по 20 пати отворање и затворање на екран генериран со вештачка интелигенција, меморијата на апликацијата се зголемила од 40 MB на 180 MB. Причината беше што ViewController не можеше да се исчисти од меморијата поради недостиг на [слабо јас] во затворањето. Графикот за меморија на Xcode ја откри стапицата. Лекција: профилот на меморијата е задолжителен во мајчин развој.
Случај 3 - Разлика во платформата. Тим на Flutter доби код за пристап до галеријата од вештачката интелигенција, работеше на Android, но падна на iOS. Причината беше што описот на дозволата за фото библиотека (NSPhotoLibraryUsageDescription) не беше додаден во датотеката Info.plist; ВИ ја напиша само страната на Android. Тоа е поправка од 15 минути, но ќе беше отфрлање во продавницата ако не беше фатено.
Слаб промпт / Силен промпт
Слаб промпт: „Напишете Kotlin код што ги повлекува производите од API“.
Моќен потсетник: „Генерирајте код за Android/Kotlin што ја повлекува листата на производи од REST API.- Мрежен слој со доградба, функција за суспендирање- Работа на мрежата во Dispatchers.IO; блокирање на главната нишка- MVVM: складиште -> ViewModel -> Состојба на интерфејс со StateFlow- Состојби на грешка: нема класирана состојба, засебно н.xllxal безбедност, !!
Силното поттикнување го спречува генерираниот код да падне во замките на претходните случаи.
Шаблони за копирање
Шаблон за производство на слоеви: „Развијте [функција] за [платформа/јазик]. Производство по редослед: 1) Модел на податоци (класа на податоци/структура) 2) слој на мрежа или извор на податоци3) складиште4) ViewModel (управување со состојби) 5) екран (UI) Извезете го секој слој посебно, додајте белешка за интеграција меѓу нив.
Безбедносен шаблон за специфичен јазик (Котлин): „Прегледајте го овој Котлин код:- Исчистете ја употребата на !! и типот на платформата- Потврдете го опсегот на корутината и изборот на диспечер- Дали има повици што ја блокираат главната нишка?[код]“
Безбедносен шаблон специфичен за јазикот (Swift): „Прегледајте го овој Swift-код:- Ризик од задржување циклус при затворање (слаб/непосебен сопствен)- Употреба на опционално присилно одвиткување (!)- Тешка работа што треба да се премести од главната нишка [шифра]“
Шаблон за контрола на повеќе платформи: „Наведете ги сите дозволи, конфигурации и код специфични за платформата потребни за оваа функција [Flutter/React Native] и на iOS и на Android. Обезбедете посебни записи Info.plist и AndroidManifest.xml“.
Вообичаени грешки
- Барање код без наметнување архитектура. Резултат: структура која не може да се тестира, која набива сè на екранот.
- Доверба без тестирање на истовремен код. Главните блокови на нишките и неточниот опсег се најчестите причини за падови.
- Со поглед на управувањето со меморијата. Особено протекување во затворање на iOS; Не се забележува без преземање профил.
- Заобиколувајќи ги разликите во платформата. Во меѓуплатформските алатки, дозволите и конфигурацијата се напишани одделно на двете платформи.
- Не се потврдува верзијата на библиотеката. AI може да предложи застарен Retrofit/Alamofire API; Проверете со официјалниот документ.
- Производство на една огромна датотека. Невозможно да се одржува и да се потврди; побарајте слоеви.
Сумирано
Генерирањето код со вештачка интелигенција е моќно кога ја одредувате архитектурата. Прво наметнете структура како MVVM, потоа побарајте слој по слој и во мали парчиња, составете го и тестирајте го секое парче. Нулта безбедност и корутина во Котлин, опционалните и мемориските циклуси во Swift бараат посебно внимание. Во меѓуплатформските алатки, дозволите и конфигурацијата се напишани посебно за секоја платформа. Силната порака однапред ги кажува јазикот, верзијата, архитектурата и безбедносните правила специфични за јазикот; Ова ги спречува најчестите грешки при паѓање и истекување во производството.
Задача за апликација
За екран на список (на пр. „список на контакти“), побарајте код од вештачката интелигенција користејќи го „шаблонот за производство на додатоци“ во вашата платформа на избор (Котлин или Свифт). Додајте го генерираниот код на проект, компајлирајте го и направете ги овие две проверки: (1) дали мрежата/долгиот процес работи на главната нишка, (2) дали е точна нула/опционална безбедност? Нека вештачката интелигенција го реши проблемот што го наоѓате со безбедносен образец специфичен за јазикот.
листа за проверка
- [ ] Ја наведов архитектурата (MVVM итн.) пред да побарам код
- [ ] Сакав слој по слој, на мали парчиња
- [ ] Тестирав дека истовремениот код не ја блокира главната нишка
- [ ] Проверив нула/опционална безбедност и управување со меморијата
- [ ] Ги потврдив дозволите/поставките на две платформи одделно во проект со повеќе платформи
- [ ] Ги потврдив верзиите на библиотеката и потписите на API од официјалната документација