zisky:
- Schopnosť zapisovať funkcie, triedy a moduly do AI s jasnými definíciami vstupu-výstupu a obmedzení
- Schopnosť používať AI ako párového programovacieho partnera a postupovať krok za krokom, v malých, overiteľných kúskoch
- Schopnosť zachytiť logické a okrajové chyby kompiláciou kódu generovaného AI a jeho spustením s malými príkladmi
Párové programovanie je, keď dvaja vývojári pracujú na rovnakom probléme, pričom jeden píše a druhý reviduje. Kódovanie s AI je digitálnou verziou tohto vzťahu: vy určujete smer, obmedzenia a akceptačné kritériá; AI vytvára rýchly návrh; Každý krok overíte jeho kompiláciou a testovaním. Najväčšou pascou je povedať AI „napíš mi túto aplikáciu od začiatku do konca“ a slepo prijať 200-riadkový blok. Dobré párové programovanie prebieha v malých krokoch: každý krok by mal byť zrozumiteľný, testovateľný a reverzibilný.
V tejto lekcii sa naučíte tlačiť funkcie, triedy a moduly s jasným vstupno-výstupným kontraktom; Ako viesť AI krok za krokom; a uvidíme, ako zachytiť logické a okrajové chyby spustením kódu, ktorý vytvára, s malými príkladmi. Cieľom nie je rýchlosť, ale overená rýchlosť.
Koncepty: Vstupno-výstupná zmluva: Jasná definícia toho, aký vstup má funkcia a aký výstup a chybové správanie sľubuje. Edge case: Vstup, ktorý nie je obyčajný, ale môže sa skutočne vyskytnúť (prázdny, nulový, záporný, veľmi veľký, null). Postupný vývoj: Postup s malými pracovnými kusmi a overenie každého kroku.
Tlačový kód so sieťovým kontraktom
Základom kódexu kvality je presne definovať „čo chcete“ ešte pred začatím práce. Pri písaní funkcie do AI jej dajte päť vecí: jazyk a verziu, typy a významy vstupu, výstup, chybové stavy a obmedzenia (výkon, zákaz externej knižnice, štýl). To zabraňuje AI hádať.
- Napíšte zmluvu. Vstup, výstup, chyba, obmedzenie.
- Požiadajte o malú jednotku. Funkcia s jedinou zodpovednosťou; Nie je to veľký modul.
- Požiadajte o testovací blok. Pridajte niekoľko vzorových spustení/testov vedľa kódu.
- Zostavte a spustite. Skúste to s okrajovými puzdrami, výstup overte okom.
- Prejdite na ďalší krok. Akonáhle je kus potvrdený, stavte na ňom.
Výzva zmluvnej funkcie: "Napíšte funkciu pre TypeScript 5. Účel: vypočítajte celkové množstvo položiek v nákupnom košíku. Vstup: { cena: počet, množstvo: číslo }[] pole. Výstup: číslo (celkom). Pravidlá: vyhadzovať chybu, ak je množstvo alebo cena záporné; vráťte 0 pre prázdne pole; zaokrúhlite množstvo na 2 desatinné miesta pre desatinnú chybu. Nepoužite 5 externých desatinných miest, prázdnu knižnicu. desatinná cena, jedna položka).
Vedenie AI ako pár
Dobrý pokrok v párovom programovaní je skôr dialóg než jedna veľká požiadavka. Najprv si vyžiadajte kostru a spustite ju; potom pridajte okrajový stav; potom opravte chybu. Tento prístup udržuje kód zrozumiteľný a dáva vám kontrolu nad každým krokom.
Prírastková výzva na postup: "Napíšeme čítačku, ktorá prečíta súbor CSV a prevedie riadky na objekt. Poďme KROK ZA KROKOM a prejdeme na ďalší krok bez toho, aby som každý krok potvrdil. Krok 1: jednoducho napíšte kostru, ktorá rozdelí súbor na riadky a oddelí riadok hlavičky. Zatiaľ nepridávajte konverziu typov ani spracovanie chýb. Nech je to krátke, vysvetlite."
Vysvetlite a zdôvodnite kódovú výzvu: "Vysvetlite funkciu, ktorú ste práve napísali, nie riadok po riadku, ale rozhodnutie po rozhodnutí: ktoré rozhodnutie o dizajne ste urobili a prečo, ktorý okrajový prípad ste riešili a ako, ktoré prípady ste zámerne vylúčili? Uveďte v kóde 3 predpoklady, ktoré by som si nemal nechať ujsť."
Tip: Neprijímajte kód vygenerovaný AI bez toho, aby ste mu porozumeli. "Vysvetlite mi to, aké predpoklady ste urobili?" Otázka odhaľuje skryté chyby a umožňuje vám brániť tento kód, pretože za kód zostávate zodpovední. Zadať do výroby kód, ktorému nerozumiete, je ako poslať zmluvu bez jej podpísania.
Slabá výzva / silná výzva
SLABÝ:"Napíšte funkciu triedenia."(Výsledok: ktorý jazyk, čo sa triedi, je to stabilné, aké je obmedzenie výkonu, kód, ktorý je vágny a pravdepodobne nevyhovuje požiadavkám.)SILNÝ:"Pre Java 17 napíšte metódu, ktorá triedi objekt List<Zamestnanec> najskôr podľa oddelenia (abecedne), potom podľa platu (NENAHRAĎTE pôvodný zoznam. NENAHRAĎTE pôvodný zoznam). vysvetlite zložitosť metódy v riadku komentára zadajte hlavný testovací blok so 4 vzorkami."
Výkonná výzva; Zahŕňa kritérium triedenia (dvojúrovňové), pravidlo vedľajších účinkov (nahradenie pôvodného), nulové správanie a očakávané testovanie. Bez týchto podrobností AI vytvorí hodnoverné, ale nesprávne riešenie; môže napríklad poškodiť pôvodný zoznam, čo povedie k tichej chybe inde.
Overenie pomocou puzdier Edge a malých vzoriek
Kód, ktorý funguje v šťastnom scenári, nie je správny kód. Vedome vynútite každú produkovanú funkciu:
Typ okrajového puzdra
vzorový vstup
očakávané správanie
prázdny vstup
Prázdne pole/reťazec
Nie je to chyba, logický prázdny výsledok
Nula/zápor
0, -1
Definované a správne správanie
veľkú hodnotu
Milióny záznamov
Kontrola pretečenia/výkonu
null/nedefinované
chýbajúci priestor
Kontrolovaná chyba alebo predvolená hodnota
Duplicitné/nezvyčajné
opakujúce sa, v opačnom poradí
správny výsledok
Mini kufríky
Prípad 1 – Tichá chyba zaokrúhľovania. AI píše funkciu, ktorá zbiera peniaze s desiatkovými (float) typmi; 0,1 + 0,2 dáva 0,30000000000000004. Chyba je vyriešená, keď inžinier pridá pravidlo „Zaokrúhlite na 2 číslice a použite celé haliere“. Trojriadkové pravidlo bráni tisíckam centov odchýlkam v mesačnom vyrovnaní.
Prípad 2 – Pasca vedľajších účinkov. Umelá inteligencia napíše metódu, ktorá „triedi“ zoznam, ale upravuje pôvodný zoznam na mieste. Dochádza k neočakávanému správaniu, pretože iný modul používa rovnaký zoznam. Ak by sa vo výzve nachádzalo obmedzenie „zmeniť originál“, chyba by sa nikdy nevyskytla; dostane sa do kontroly kódu a zabráni 2 hodinám ladenia.
Prípad 3 – Zárobky krok za krokom. Vývojár vytlačí 150-riadkový modul importu naraz; Keď nájde chybu, nevie nájsť odkiaľ prišla. Ďalší vývojár rozdelí rovnakú prácu na 5 malých krokov, každý krok otestuje za 2 minúty a chybu zachytí hneď v 3. kroku.
Časté chyby
- Tlač veľkých blokov v jednej požiadavke. Vzniká riskantný kód, ktorý je ťažké pochopiť a ladiť.
- Žiadosť o kód bez poskytnutia zmluvy. Ak je chyba vstupu-výstupu nejednoznačná, AI to uhádne a pomýli sa.
- Len testovanie šťastného scenára. Ak sa nevyskúša prázdny, nulový, záporný a veľký vstup, chyba sa ponechá na produkciu.
- Prijímanie bez pochopenia. Kód, ktorý nezverejníte, je dlh, ktorý nemôžete brániť.
- Ignorovanie citlivých typov, ako sú vedľajšie účinky a peniaze/dátum. Pohyblivé peniaze s nadčasovou históriou sú klasickým zdrojom chýb.
V súhrne
Písanie kódu pomocou AI je disciplinované párové programovanie: jasná zmluva, malé kroky, zostavenie a testovanie v každom kroku. Kvalitu kódu určuje štvorica vstup-výstup-chyba-obmedzenie od začiatku. Vysvetlenie kódu, ktorý vytvára, a jeho vynútenie pomocou okrajových prípadov vynáša na povrch chyby skryté pod šťastným scenárom. Zdrojom rýchlosti nie je slepé prijatie; je rýchly návrh plus rýchle overenie.
Aplikačná úloha
Vyberte si malú, ale skutočnú funkciu (napr. celkový počet košíkov, rozdiel dátumov, analýza textu). Tlačte pomocou výzvy zmluvnej funkcie; Pridajte k nej aspoň 5 testovacích scenárov. Spustite kód a vedome vyskúšajte 5 okrajových prípadov, pričom ako návod použite tabuľku. Nájdite chybu aspoň v jednom okrajovom prípade (ak nie, navrhnite nový vstup na vynútenie funkcie), opravte ju pomocou AI a opätovným testovaním overte, že oprava fungovala.
kontrolný zoznam
- [ ] Napísal som zmluvu, ktorá obsahuje vstup, výstup, chyby a obmedzenia.
- [ ] Kód som vygeneroval v malých krokoch namiesto jedného veľkého bloku.
- [ ] Vedľa kódu som pridal blok testu/vzorky.
- [ ] Vedome som otestoval najmenej 5 okrajových prípadov.
- [ ] Vysvetlil som kód AI a skontroloval som jeho predpoklady.
- [ ] Nájdenú chybu som opravil a opravu potvrdil opätovným testovaním.