zisky:
- Schopnost zapisovat funkce, třídy a moduly do AI s jasnými definicemi vstupů a výstupů a omezení
- Schopnost používat AI jako párového programovacího partnera a postupovat krok za krokem, po malých, ověřitelných kouscích
- Schopnost zachytit logické a okrajové chyby zkompilováním kódu generovaného umělou inteligencí a jeho spuštěním s malými příklady
Párové programování je, když dva vývojáři pracují na stejném problému, přičemž jeden píše a druhý reviduje. Kódování s umělou inteligencí je digitální verzí tohoto vztahu: vy nastavujete směr, omezení a kritéria přijetí; AI vytváří rychlý návrh; Každý krok ověříte jeho kompilací a testováním. Největší pastí je říct AI „napiš mi tuto aplikaci od začátku do konce“ a slepě přijmout 200řádkový blok. Dobré párové programování probíhá po malých krocích: každý krok by měl být srozumitelný, testovatelný a vratný.
V této jednotce se naučíte tisknout funkce, třídy a moduly s jasnou vstupní a výstupní smlouvou; Jak vést AI krok za krokem; a uvidíme, jak zachytit logické a okrajové chyby spuštěním kódu, který vytváří, s malými příklady. Cílem není rychlost, ale ověřená rychlost.
Koncepty: Vstupně-výstupní smlouva: Jasná definice toho, jaký vstup funkce přijímá a jaký výstup a chybové chování slibuje. Edge case: Vstup, který není běžný, ale může se skutečně vyskytnout (prázdný, nulový, záporný, velmi velký, null). Postupný vývoj: Postup s malými pracovními kusy a ověřování každého kroku.
Tisk kódu s Net kontraktem
Základem kvalitního kódu je přesně definovat „co chcete“ před zahájením práce. Když zapisujete funkci do AI, dejte jí pět věcí: jazyk a verzi, typy a významy vstupů, výstup, chybové stavy a omezení (výkon, zákaz externí knihovny, styl). To zabraňuje AI v hádání.
- Napište smlouvu. Vstup, výstup, chyba, omezení.
- Požádejte o malou jednotku. Funkce s jedinou odpovědností; Není to velký modul.
- Požádejte o testovací blok. Přidejte několik ukázkových běhů/testů vedle kódu.
- Zkompilujte a spusťte. Zkuste to s okrajovými pouzdry, ověřte výstup zrakem.
- Přejděte k dalšímu kroku. Jakmile je kus potvrzen, stavte na něm.
Výzva smluvní funkce: "Napište funkci pro TypeScript 5. Účel: vypočítejte celkové množství položek v nákupním košíku. Vstup: { cena: počet, množství: číslo }[] pole. Výstup: číslo (celkem). Pravidla: throw Error, pokud je množství nebo cena záporná; vraťte 0 pro prázdné pole; zaokrouhlete množství na 2 desetinná místa pro desetinnou chybu. Přidejte 5 záporných čísel, ani nepoužívejte externí knihovnu. desetinná cena, jedna položka).
Vedení AI jako pár
Dobrý pokrok v párovém programování je spíše dialog než jeden velký požadavek. Nejprve si vyžádejte kostru a spusťte ji; pak přidejte okrajový stav; pak opravte chybu. Tento přístup udržuje kód srozumitelný a dává vám kontrolu nad každým krokem.
Incremental progress prompt: "Napíšeme čtečku, která přečte soubor CSV a převede řádky na objekt. Pojďme KROK ZA KROKEM, přejdeme k dalšímu kroku, aniž bych každý krok potvrzoval. Krok 1: stačí napsat kostru, která rozdělí soubor na řádky a oddělí řádek záhlaví. Zatím nepřidávejte převod typu ani zpracování chyb. Nechte to krátké, vysvětlete."
Vysvětlete a odůvodněte výzvu kódu: "Vysvětlete funkci, kterou jste právě napsali, ne řádek po řádku, ale rozhodnutí po rozhodnutí: jaké rozhodnutí o návrhu jste udělali a proč, který okrajový případ jste řešili a jak, které případy jste záměrně vyloučili? Vyjmenujte v kódu 3 předpoklady, které bych neměl minout."
Tip: Nepřijímejte kód vygenerovaný AI, aniž byste mu rozuměli. "Vysvětlete mi to, jaké předpoklady jste učinil?" Otázka odhaluje skryté chyby a umožňuje vám tento kód bránit, protože za kód nesete odpovědnost. Vložit do výroby kód, kterému nerozumíte, je jako poslat smlouvu, aniž byste ji podepsali.
Slabá výzva / Silná výzva
SLABÝ:"Napište třídicí funkci."(Výsledek: jaký jazyk, co se třídí, je to stabilní, jaké je omezení výkonu, kód, který je vágní a pravděpodobně neodpovídá požadavku.)SILNÝ:"Pro Java 17 napište metodu, která seřadí objekt List<Zaměstnanec> nejprve podle oddělení (abecedně), pak podle platu (NENAHRAĎTE nový seznam. NENAHRAĎTE původní seznam). poslední vysvětlete složitost metody v řádku komentáře zadejte hlavní testovací blok se 4 vzorky."
Výkonná výzva; Zahrnuje kritérium řazení (dvouúrovňové), pravidlo vedlejšího účinku (nahrazuje původní), nulové chování a očekávání testu. Bez těchto podrobností vytváří AI věrohodné, ale nesprávné řešení; může například poškodit původní seznam a to povede k tiché chybě jinde.
Validace pomocí Edge Case a malých vzorků
Kód, který funguje ve šťastném scénáři, není správný kód. Vědomě vynutit každou vytvořenou funkci:
Typ okrajového pouzdra
vzorový vstup
očekávané chování
prázdný vstup
Prázdné pole/řetězec
Není to chyba, logický prázdný výsledek
Nula/záporné
0, -1
Definované a správné chování
skvělá hodnota
Miliony záznamů
Kontrola přetečení/výkonu
null/undefined
chybějící prostor
Kontrolovaná chyba nebo výchozí nastavení
Duplicitní/neobvyklé
opakující se, obrácené pořadí
správný výsledek
Mini pouzdra
Případ 1 – Tichá chyba zaokrouhlování. AI zapisuje funkci, která sbírá peníze s desítkovými (float) typy; 0,1 + 0,2 dává 0,30000000000000004. Chyba je vyřešena, když inženýr přidá pravidlo „Zaokrouhlit na 2 číslice a použít celé haléře“. Třířádkové pravidlo zabraňuje tisícům haléřů odchylek v měsíčním odsouhlasení.
Případ 2 – Past na vedlejší efekt. Umělá inteligence zapisuje metodu, která „třídí“ seznam, ale upravuje původní seznam na místě. Dochází k neočekávanému chování, protože jiný modul používá stejný seznam. Pokud by omezení "změnit původní" bylo ve výzvě, k chybě nikdy nedošlo; zachytí se při kontrole kódu a zabrání 2 hodinám ladění.
Případ 3 – Výdělky krok za krokem. Vývojář vytiskne 150řádkový importní modul najednou; Když najde chybu, nemůže najít, kde se vzala. Jiný vývojář rozdělí stejnou práci do 5 malých kroků, každý krok otestuje za 2 minuty a chybu zachytí hned ve 3. kroku.
Časté chyby
- Tisk velkých bloků v jednom požadavku. Vzniká riskantní kód, který je obtížné pochopit a ladit.
- Žádost o kód bez poskytnutí smlouvy. Pokud je chyba vstupu-výstupu nejednoznačná, umělá inteligence bude hádat a bude se mýlit.
- Jen testování šťastného scénáře. Pokud se nevyzkouší prázdný, nulový, záporný a velký vstup, chyba se ponechá na produkci.
- Přijímání bez pochopení. Kód, který nezveřejníte, je dluh, který nemůžete bránit.
- Ignorování citlivých typů, jako jsou vedlejší účinky a peníze/datum. Pohyblivé peníze s nadčasovou historií jsou klasickým zdrojem chyb.
V souhrnu
Psaní kódu pomocí AI je disciplinované párové programování: jasná smlouva, malé kroky, sestavení a testování v každém kroku. Kvalitu kódu určuje hned od začátku kvarteto omezení vstupu-výstupu-chyby-omezení. Vysvětlení kódu, který vytváří, a jeho vynucení pomocí okrajových případů vynese na povrch chyby skryté pod šťastným scénářem. Zdrojem rychlosti není slepé přijetí; je rychlý návrh plus rychlé ověření.
Aplikační úkol
Vyberte malou, ale skutečnou funkci (např. celkový počet košíků, rozdíl data, analýza textu). Vytiskněte pomocí výzvy smluvní funkce; Přidejte vedle něj alespoň 5 testovacích scénářů. Spusťte kód a vědomě vyzkoušejte 5 okrajových případů, přičemž jako vodítko použijte tabulku. Najděte chybu alespoň v jednom hraničním případě (pokud ne, navrhněte nový vstup pro vynucení funkce), opravte ji pomocí AI a ověřte opakovaným testováním, že oprava fungovala.
kontrolní seznam
- [ ] Napsal jsem smlouvu, která obsahuje vstup, výstup, chyby a omezení.
- [ ] Kód jsem vygeneroval po malých krocích místo jednoho velkého bloku.
- [ ] Vedle kódu jsem přidal blok testu/vzorku.
- [ ] Vědomě jsem testoval alespoň 5 okrajových případů.
- [ ] Vysvětlil jsem kód AI a přezkoumal jeho předpoklady.
- [ ] Nalezenou chybu jsem opravil a opravu potvrdil opakovaným testováním.