Nyereség:
- Képes funkciókat, osztályokat és modulokat írni az AI-ba világos bemeneti-kimeneti és kényszerdefiníciókkal
- Képes mesterséges intelligencia páros programozási partnerként használni, és lépésről lépésre haladni, kis, ellenőrizhető darabokban
- Az AI által generált kód összeállításával és kis példákkal való futtatásával képes a logikai és az éles esetek hibáinak észlelésére
A páros programozás az, amikor két fejlesztő dolgozik ugyanazon a problémán, az egyik írással, a másik pedig felülvizsgálja. A mesterséges intelligencia segítségével történő kódolás ennek a kapcsolatnak a digitális változata: Ön határozza meg az irányt, a korlátokat és az elfogadási kritériumokat; Az AI gyors huzatot produkál; Minden lépést a fordítással és teszteléssel ellenőrizhet. A legnagyobb csapda itt az, ha azt mondjuk az AI-nak, hogy „írja meg nekem ezt az alkalmazást az elejétől a végéig”, és vakon elfogad egy 200 soros blokkot. A jó páros programozás kis lépésekben történik: minden lépésnek érthetőnek, tesztelhetőnek és visszafordíthatónak kell lennie.
Ebben az egységben megtanulhatja, hogyan nyomtathat funkciókat, osztályokat és modulokat egyértelmű bemeneti-kimeneti szerződéssel; Hogyan irányítsuk az AI-t lépésről lépésre; és meglátjuk, hogyan lehet elkapni a logikai és az éles esethibákat az általa előállított kód futtatásával kis példákkal. A cél nem a sebesség, hanem az ellenőrzött sebesség.
Fogalmak: Bemeneti-kimeneti szerződés: Egyértelmű definíció, hogy egy függvény milyen bemenetet vesz igénybe, és milyen kimeneti és hibaviselkedést ígér. Éles eset: Nem közönséges, de ténylegesen előforduló bemenet (üres, nulla, negatív, nagyon nagy, nulla). Inkrementális fejlesztés: Folytassa a kis, munkadarabokkal és minden lépést érvényesítsen.
Kód nyomtatása Net szerződéssel
A minőségi kódex alapja, hogy a munka megkezdése előtt pontosan meghatározza, "mit szeretne". Amikor egy függvényt ír az AI-ba, adjon meg neki öt dolgot: nyelv és verzió, bemeneti típusok és jelentések, kimenet, hibafeltételek és megszorítások (teljesítmény, külső könyvtár tiltása, stílus). Ez megakadályozza, hogy az AI találgasson.
- Írd meg a szerződést. Bemenet, kimenet, hiba, kényszer.
- Kérjen egy kis egységet. Egy funkció egyetlen felelősséggel; Ez nem egy nagy modul.
- Kérjen tesztblokkot. Adjon hozzá néhány mintafuttatást/tesztet a kód mellé.
- Fordítsa le és futtassa. Próbáld ki éles tokkal, szemmel ellenőrizd a kimenetet.
- Lépjen a következő lépésre. Miután megerősített egy darabot, építsen rá.
Szerződéses függvényprompt: "Függvény írása TypeScript 5-höz. Cél: a bevásárlókosárban lévő cikkek teljes mennyiségének kiszámítása. Bevitel: { ár: szám, mennyiség: szám }[] tömb. Kimenet: szám (összesen). Szabályok: dobás Hiba, ha a mennyiség vagy az ár negatív; 0-t ad vissza az üres tömbhöz; kerekítse az összeget 2 tizedesjegyre a tizedesvesszőhöz. Ne adjon hozzá negatív, 5-ös teszt függvényt, üres függvényt. tizedes ár, egyetlen tétel).
Irányító AI párként
A páros programozás jó előrehaladása inkább párbeszéd, mint egyetlen nagy kérés. Először kérje le a csontvázat, és futtassa; majd adjunk hozzá egy élállapotot; majd javíts ki egy hibát. Ezzel a megközelítéssel a kód érthető marad, és minden lépésben az Ön kezébe kerül az irányítás.
Inkrementális előrehaladás: "Írunk egy olvasót, amely beolvas egy CSV-fájlt, és a sorokat objektummá alakítja. Lépésről lépésre lépjünk tovább a következő lépésre anélkül, hogy minden lépést megerősítenék. 1. lépés: csak írja be a vázat, amely sorokra bontja a fájlt, és elválasztja a fejlécsort. Ne adjon hozzá típuskonverziót vagy hibakezelést. Még ne írja le röviden, magyarázza el."
Magyarázza el és indokolja meg a kódpromptot: "Ne soronként, hanem döntésenként magyarázza el az imént írt függvényt: melyik tervezési döntést hozta meg és miért, melyik élesetet kezelte és hogyan, mely eseteket zárta ki szándékosan? Soroljon fel 3 olyan feltevést a kódban, amit nem szabad kihagynom."
Tipp: Ne fogadja el az AI által generált kódot anélkül, hogy megértette volna. – Magyarázd meg nekem, milyen feltevésekkel éltél? A kérdés rejtett hibákat is feltár, és lehetővé teszi a kód védelmét, mivel a kód az Ön felelőssége marad. A nem értett kód gyártásba helyezése olyan, mint egy szerződés aláírása nélkül kiküldeni.
Gyenge felszólítás / Erős felszólítás
GYENGE:"Írjon rendezési függvényt." (Eredmény: melyik nyelv, mi van rendezve, stabil-e, mi a teljesítménykényszer, homályos és valószínűleg nem a követelményeknek megfelelő kód.)STRONG:"Java 17 esetén írjon egy metódust, amely először osztály szerint rendezi a List<Employee> objektumot (ábécé sorrendben), majd nullACE adja vissza az eredeti listát. Utolsóként magyarázza el a módszer összetettségét, adjon hozzá egy fő tesztblokkot 4 mintával.
Erőteljes felszólítás; Tartalmazza a rendezési kritériumot (kétszintű), a mellékhatás szabályt (az eredetit helyettesíti), a nulla viselkedést és a teszt elvárásait. E részletek nélkül a mesterséges intelligencia elfogadható, de helytelen megoldást ad; például megsértheti az eredeti listát, és ez máshol néma hibához vezet.
Érvényesítés Edge tokkal és kis mintákkal
A boldog forgatókönyvben működő kód nem a megfelelő kód. Tudatosan erőltessen minden egyes előállított függvényt:
Edge tok típusa
minta bemenet
elvárt viselkedés
üres bemenet
Üres tömb/karakterlánc
Nem hiba, logikai üres eredmény
Nulla/negatív
0, -1
Meghatározott és helyes viselkedés
nagy érték
Több millió rekord
Túlcsordulás/teljesítményszabályozás
null/undefined
hiányzó hely
Ellenőrzött hiba vagy alapértelmezett
Ismétlődő/szokatlan
ismétlődő, fordított sorrendben
helyes eredmény
Mini tokok
1. eset – Néma kerekítési hiba. Az AI egy függvényt ír, amely decimális (lebegő) típusú pénzt gyűjt; 0,1 + 0,2 0,30000000000000004. A hiba akkor oldódik meg, amikor a mérnök hozzáadja a "Kerekíts 2 számjegyre és használj teljes fillért" szabályt. Egy 3 soros szabály megakadályozza a több ezer fillér eltérést a havi egyeztetésben.
2. eset – Mellékhatás-csapda. Az AI olyan módszert ír, amely „rendbe rendezi” a listát, de a helyén módosítja az eredeti listát. Váratlan viselkedés történik, mert egy másik modul ugyanazt a listát használja. Ha az "eredeti módosítása" megszorítás szerepel a promptban, a hiba soha nem fordul elő; belekerül a kódellenőrzésbe, és megakadályozza a 2 órás hibakeresést.
3. eset – Bevétel lépésről lépésre. Egy fejlesztő egyszerre nyomtat egy 150 soros importmodult; Ha hibát talál, nem tudja, honnan ered. Egy másik fejlesztő ugyanazt a munkát 5 kis lépésre osztja, minden lépést 2 perc alatt tesztel, és a 3. lépésben azonnal észleli a hibát.
Gyakori hibák
- Nagy blokkok nyomtatása egy kéréssel. Kockázatos, nehezen érthető és hibakereső kód születik.
- Kód kérése szerződéskötés nélkül. Ha az input-output-error kétértelmű, az AI kitalálja, és téved.
- Csak a boldog forgatókönyv tesztelése. Ha az üres, nulla, negatív és nagy bevitelt nem próbálja meg, a hiba a termelésre marad.
- Megértés nélkül elfogadni. A kód, amelyet nem tesz közzé, olyan adósság, amelyet nem tud megvédeni.
- Az olyan érzékeny típusok figyelmen kívül hagyása, mint a mellékhatások és a pénz/dátum. Az időtlen történelemmel rendelkező úszópénz klasszikus hibaforrás.
Összefoglalva
A kódírás mesterséges intelligencia segítségével fegyelmezett páros programozás: egyértelmű szerződés, kis lépések, építés és tesztelés minden lépésben. Az input-output-error-constraint kvartett kezdettől fogva megadása határozza meg a kód minőségét. Az általa előállított kód magyarázata és éles esetekkel való erőltetése felszínre hozza a boldog forgatókönyv alatt rejtőző hibákat. A sebesség forrása nem a vak elfogadás; gyors vázlat és gyors ellenőrzés.
Pályázati feladat
Válasszon egy kicsi, de valós függvényt (pl. kosár összege, dátumkülönbség, szövegelemzés). Nyomtatás a szerződéses funkció prompt használatával; Adjon hozzá legalább 5 tesztforgatókönyvet. Futtassa le a kódot, és próbáljon ki 5 éles esetet tudatosan, a táblázat segítségével. Keressen hibát legalább egy szélső esetben (ha nem, tervezzen új bemenetet a funkció kényszerítéséhez), javítsa ki az AI segítségével, és ellenőrizze újbóli teszteléssel, hogy a javítás működött.
ellenőrző lista
- [ ] Írtam egy szerződést, amely tartalmazza a bemenetet, a kimenetet, a hibákat és a megszorításokat.
- [ ] Egy nagy blokk helyett kis lépésekben generáltam a kódot.
- [ ] A kód mellé tettem egy teszt/mintafutás blokkot.
- [ ] Legalább 5 éleset tudatosan teszteltem.
- [ ] Elmagyaráztam a kódot az AI-nak, és felülvizsgáltam a feltételezéseit.
- [ ] Javítottam a talált hibát, és újbóli teszteléssel megerősítettem a javítást.