Табыстар:
- Анық енгізу-шығару және шектеу анықтамалары бар AI-ға функцияларды, сыныптарды және модульдерді жазу мүмкіндігі
- AI-ны жұптық бағдарламалау серіктесі ретінде пайдалану мүмкіндігі және шағын, тексерілетін бөліктерде қадамдық прогресс
- AI жасаған кодты құрастыру және оны шағын мысалдармен іске қосу арқылы логикалық және шеткі жағдай қателерін анықтау мүмкіндігі
Жұптық бағдарламалау – екі әзірлеуші бір мәселемен жұмыс істейді, біреуі жазу, екіншісі қайта қарау. AI-мен кодтау - дәл осы қатынастың цифрлық нұсқасы: сіз бағытты, шектеулерді және қабылдау критерийлерін орнатасыз; AI жылдам жобаны жасайды; Әр қадамды құрастыру және сынау арқылы тексересіз. Мұндағы ең үлкен тұзақ - AI-ға «маған осы қолданбаны басынан аяғына дейін жазыңыз» деп айту және 200 жолдық блокты соқыр түрде қабылдау. Жақсы жұптық бағдарламалау шағын қадамдармен жүреді: әрбір қадам түсінікті, сыналатын және қайтымды болуы керек.
Бұл бөлімде сіз нақты енгізу-шығару келісім-шартымен функцияларды, сыныптарды және модульдерді басып шығаруды үйренесіз; AI-ды қадам бойынша қалай бағыттау керек; және біз шағын мысалдармен шығаратын кодты іске қосу арқылы логиканы және регистрлік қателерді қалай ұстау керектігін көреміз. Мақсат - жылдамдық емес, тексерілген жылдамдық.
Тұжырымдамалар: Енгізу-шығару келісім-шарты: Функция қандай кірісті қабылдайтынының және оның қандай шығыс және қате әрекетін уәде ететінінің нақты анықтамасы. Жиек регистрі: кәдімгі емес, бірақ шын мәнінде орын алуы мүмкін енгізу (бос, нөл, теріс, өте үлкен, нөл). Қосымша даму: Кішкентай, жұмыс бөліктерімен жалғастыру және әрбір қадамды тексеру.
Таза келісім-шартпен басып шығару коды
Сапа кодының негізі - жұмысты бастамас бұрын дәл «не қажет» анықтау. AI-ге функция жазғанда, оған бес нәрсені беріңіз: тіл мен нұсқа, енгізу түрлері мен мағыналары, шығыс, қате жағдайлары және шектеулер (өнімділік, сыртқы кітапханаға тыйым салу, стиль). Бұл AI болжауға жол бермейді.
- Келісімшартты жазыңыз. Енгізу, шығару, қате, шектеу.
- Шағын бірлік сұраңыз. Бір ғана жауапты функция; Бұл үлкен модуль емес.
- Сынақ блогын сұрау. Кодтың жанына бірнеше үлгіні іске қосу/сынау қосыңыз.
- Құрастыру және іске қосу. Оны шеткі корпустармен қолданып көріңіз, шығысты көзбен тексеріңіз.
- Келесі қадамға өтіңіз. Бөлшек расталғаннан кейін оны құрастырыңыз.
Келісімшарттық функция шақыруы: "TypeScript 5 үшін функцияны жазыңыз. Мақсаты: қоржындағы элементтердің жалпы санын есептеңіз. Енгізіңіз: { бағасы: саны, саны: саны }[] массиві. Шығару: сан (жалпы). Ережелер: Қате саны немесе бағасы теріс болса, қатені жіберіңіз; бос массив үшін 0 мәнін қайтарыңыз; ондық 5-ке дейінгі сандарды тексеру функциясын 2-ге дейін дөңгелектеңіз. (қалыпты, бос, теріс сан, ондық баға, бір элемент).
AI-ны жұп ретінде бағыттау
Жұптық бағдарламалаудағы жақсы прогресс бір үлкен сұраныс емес, диалог болып табылады. Алдымен қаңқаны сұрап, оны іске қосыңыз; содан кейін жиек күйін қосыңыз; содан кейін қатені түзетіңіз. Бұл тәсіл кодты түсінікті етіп сақтайды және сізді әр қадамда басқаруға мүмкіндік береді.
Прогресстің қадамдық нұсқауы: "Біз CSV файлын оқитын және жолдарды нысанға түрлендіретін оқырман жазамыз. Әр қадамды растамай-ақ келесі қадамға көшіп, ҚАДАМ БОЙЫНША өтейік. 1-қадам: файлды жолдарға бөлетін және тақырып жолын бөлетін қаңқаны жазыңыз. Түр түрлендіруді немесе қатені өңдеуді әлі де қоспаңыз."
Кодтық нұсқауды түсіндіріңіз және негіздеңіз: "Жақында жазған функцияңызды жол бойынша емес, шешім бойынша түсіндіріңіз: қандай дизайн шешімін жасадыңыз және неліктен, қай шеткі жағдайды өңдедіңіз және қалай, қандай жағдайларды әдейі алып тастадыңыз? Мен жіберіп алмауым керек кодтағы 3 болжамды тізімдеңіз."
Кеңес: AI жасаған кодты түсінбей қабылдамаңыз. «Маған түсіндіріңізші, сіз қандай болжам жасадыңыз?» Сұрақ жасырын қателерді көрсетеді және кодты қорғауға мүмкіндік береді, өйткені код сіздің жауапкершілігіңіз болып қала береді. Түсінбеген кодты өндіріске енгізу келісім-шартқа қол қоймастан жіберумен бірдей.
Әлсіз шақыру / Күшті шақыру
ӘЛСІЗ:"Сұрыптау функциясын жазыңыз."(Нәтиже: қай тіл, не сұрыпталып жатыр, ол тұрақты ма, өнімділік шектеуі қандай, код бұлыңғыр және талапқа сәйкес келмеуі мүмкін.)STRONG:"Java 17 үшін List<Қызметкер> нысанын алдымен бөлім бойынша (алфавит бойынша), содан кейін R LIST LIST (Жаңа тізімді қайтару) бойынша (алфавит бойынша) сұрыптайтын әдісті жазыңыз. Түсініктеме жолында нөлдік бөлімді көрсетіңіз. 4 үлгімен негізгі сынақ блогын қосыңыз.
Күшті жеделдік; Сұрыптау критерийін (екі деңгейлі), жанама әсер ережесін (түпнұсқаны ауыстыру), нөлдік әрекетті және сынақ күтуін қамтиды. Бұл мәліметтерсіз AI ақылға қонымды, бірақ дұрыс емес шешім шығарады; мысалы, ол бастапқы тізімді бұзуы мүмкін және бұл басқа жерде дыбыссыз қатеге әкеледі.
Жиектермен және шағын үлгілермен тексеру
Бақытты сценарийде жұмыс істейтін код дұрыс код емес. Әрбір өндірілген функцияны саналы түрде мәжбүрлеу:
Жиек корпусының түрі
үлгі енгізу
күтілетін мінез-құлық
бос енгізу
Бос массив/жол
Қате емес, логикалық бос нәтиже
Нөл/теріс
0, -1
Анықталған және дұрыс мінез-құлық
үлкен құндылық
Миллиондаған жазбалар
Толып кету/өнімділікті бақылау
нөл/анықталмаған
бос орын жоқ
Басқарылатын қате немесе әдепкі
Қайталанатын/ерекше
қайталанатын, кері ретті
дұрыс нәтиже
Шағын корпустар
1-жағдай — Үнсіз дөңгелектеу қатесі. AI ондық (float) түрлерімен ақшаны жинайтын функцияны жазады; 0,1 + 0,2 0,300000000000000004 береді. Қате инженер «2 цифрға дейін дөңгелектеп, бүтін тиындарды қолданыңыз» ережесін қосқанда шешіледі. 3 жолдық ереже ай сайынғы салыстырудағы мыңдаған пеннидің ауытқуын болдырмайды.
2-жағдай — Жанама әсерлер тұзағы. AI тізімді «сұрыптайтын» әдісті жазады, бірақ бастапқы тізімді орнында өзгертеді. Басқа модуль бірдей тізімді пайдаланатындықтан, күтпеген әрекет орын алады. Егер «түпнұсқаны өзгерту» шектеуі сұрауда болса, қате ешқашан орын алмас еді; кодты қарау кезінде ұсталады және 2 сағаттық жөндеуге жол бермейді.
3-жағдай – кезең-кезеңімен табыс. Әзірлеуші бірден 150 жолды импорттау модулін басып шығарады; Қатені тапса, оның қайдан шыққанын таба алмайды. Басқа әзірлеуші сол жұмысты 5 шағын қадамға бөліп, әрбір қадамды 2 минут ішінде тексеріп, қатені 3-ші қадамда бірден ұстайды.
Жалпы қателер
- Бір сұраныста үлкен блоктарды басып шығару. Түсіну және жөндеу қиын қауіпті код туады.
- Келісімшарт жасамай кодты сұрау. Егер енгізу-шығару-қателігі анық емес болса, AI болжап, қателеседі.
- Тек бақытты сценарийді сынау. Егер бос, нөлдік, теріс және үлкен енгізу қолданылмаса, қате өндіріске қалдырылады.
- Түсінбей қабылдау. Сіз ашпаған код - сіз қорғай алмайтын қарыз.
- Жанама әсерлер және ақша/күн сияқты сезімтал түрлерді елемеу. Уақытсыз тарихы бар қалқымалы ақша қателердің классикалық көзі болып табылады.
Қысқаша айтқанда
AI көмегімен код жазу - бұл тәртіпті жұптық бағдарламалау: нақты келісім-шарт, шағын қадамдар, әр қадамда құрастыру және сынау. Енгізу-шығару-қате-шектеу квартетін басынан беру кодтың сапасын анықтайды. Ол шығаратын кодты түсіндіру және оны шеткі жағдайлармен мәжбүрлеу бақытты сценарий астында жасырылған қателерді көрсетеді. Жылдамдықтың көзі соқыр қабылдау емес; жылдам жоба плюс жылдам тексеру.
Қолданбалы тапсырма
Шағын, бірақ нақты функцияны таңдаңыз (мысалы, қоржынның жалпы саны, күн айырмашылығы, мәтінді талдау). Келісімшарттық функция шақыруын пайдаланып басып шығару; Оның жанына кемінде 5 сынақ сценарийін қосыңыз. Кодты іске қосыңыз және кестені нұсқаулық ретінде пайдаланып, 5 шеткі жағдайды саналы түрде қолданып көріңіз. Кем дегенде бір шеткі жағдайда қатені табыңыз (егер олай болмаса, функцияны мәжбүрлеу үшін жаңа кірісті жасаңыз), оны AI көмегімен түзетіңіз және түзетудің жұмыс істегенін қайта тексеру арқылы тексеріңіз.
бақылау парағы
- [ ] Мен кіріс, шығыс, қателер мен шектеулерді қамтитын келісім-шарт жаздым.
- [ ] Мен кодты бір үлкен блоктың орнына шағын қадамдармен жасадым.
- [ ] Мен кодтың жанына сынақ/үлгі іске қосу блогын қостым.
- [ ] Мен саналы түрде кем дегенде 5 шеткі жағдайды сынадым.
- [ ] Мен AI-ға кодты түсіндірдім және оның болжамдарын қарастырдым.
- [ ] Мен табылған қатені түзетіп, қайта тексеру арқылы түзетуді растадым.