Fitimet:
- Aftësia për të shkruar funksione, klasa dhe module në AI me përcaktime të qarta hyrje-dalje dhe kufizimesh
- Aftësia për të përdorur AI si një partner programimi në çift dhe për të ecur hap pas hapi, në pjesë të vogla, të verifikueshme
- Aftësia për të kapur logjikën dhe gabimet e rasteve anësore duke përpiluar kodin e krijuar nga AI dhe duke e ekzekutuar atë me shembuj të vegjël
Programimi në çift është kur dy zhvillues punojnë për të njëjtin problem, me një shkrim dhe tjetrin duke rishikuar. Kodimi me AI është versioni dixhital i kësaj marrëdhënieje: ju vendosni drejtimin, kufizimet dhe kriteret e pranimit; AI prodhon draft të shpejtë; Ju verifikoni çdo hap duke e përpiluar dhe testuar atë. Kurthi më i madh këtu është t'i thuash AI "më shkruaj këtë aplikacion nga fillimi në fund" dhe të pranosh verbërisht një bllok me 200 rreshta. Programimi i mirë i çifteve vazhdon me hapa të vegjël: çdo hap duhet të jetë i kuptueshëm, i testueshëm dhe i kthyeshëm.
Në këtë njësi do të mësoni se si të printoni funksione, klasa dhe module me një kontratë të qartë hyrje-dalje; Si të drejtoni AI hap pas hapi; dhe ne do të shohim se si të kapim gabimet logjike dhe të rasteve të skajshme duke ekzekutuar kodin që prodhon me shembuj të vegjël. Qëllimi nuk është shpejtësia, por shpejtësia e verifikuar.
Konceptet: Kontrata input-output: Një përkufizim i qartë se çfarë hyrje merr një funksion dhe çfarë rezultati dhe sjellje gabimi premton. Edge case: Input që nuk është i zakonshëm, por mund të ndodhë në të vërtetë (bosh, zero, negativ, shumë i madh, null). Zhvillimi në rritje: Vazhdimi me pjesë të vogla pune dhe vërtetimi i çdo hapi.
Printimi i kodit me kontratë Net
Baza e kodit të cilësisë është të përcaktoni saktësisht "çfarë dëshironi" përpara se të filloni punën. Kur shkruani një funksion në AI, jepini pesë gjëra: gjuhën dhe versionin, llojet dhe kuptimet e hyrjes, daljen, kushtet e gabimit dhe kufizimet (performanca, ndalimi i bibliotekës së jashtme, stili). Kjo parandalon që AI të hamendësojë.
- Shkruani kontratën. Input, output, gabim, kufizim.
- Kërkoni një njësi të vogël. Një funksion me një përgjegjësi të vetme; Nuk është një modul i madh.
- Kërkoni një bllok testimi. Shtoni disa ekzekutime/teste mostra pranë kodit.
- Përpiloni dhe ekzekutoni. Provojeni me kutitë e skajeve, verifikoni daljen me sy.
- Shkoni në hapin tjetër. Pasi të konfirmohet një pjesë, ndërto mbi të.
Prompt i funksionit të kontraktuar: "Shkruani një funksion për TypeScript 5. Qëllimi: llogarisni sasinë totale të artikujve në një karrocë blerjesh. Input: {çmimi: numri, sasia: numri }[] vargu. Prodhimi: numri (total). Rregullat: hidhni Gabim nëse sasia ose çmimi është negativ; ktheni 0 për grupin bosh. Mos përdorni bibliotekën e jashtme të gabimit për 2 numra dhjetorë. (normale, boshe, sasi negative, çmimi dhjetor, artikull i vetëm)”
Udhëheqja e AI si çift
Progresi i mirë në programimin në çift është një dialog dhe jo një kërkesë e madhe. Së pari, kërkoni skeletin dhe drejtojeni atë; pastaj shtoni një gjendje të skajit; pastaj rregulloni një defekt. Kjo qasje e mban kodin të kuptueshëm dhe ju vë në kontroll në çdo hap.
Kërkesa e progresit në rritje: "Ne do të shkruajmë një lexues që lexon një skedar CSV dhe i konverton rreshtat në një objekt. Le të shkojmë HAPI PAS HAPI, duke kaluar në hapin tjetër pa e konfirmuar secilin hap. Hapi 1: thjesht shkruani skeletin që e ndan skedarin në rreshta dhe ndan rreshtin e kokës. Mos shtoni akoma konvertimin e tipit, mos e mbani ende të shkurtër."
Shpjegoni dhe justifikoni kërkesën e kodit: "Shpjegoni funksionin që sapo keni shkruar, jo rresht pas rreshti, por vendim pas vendimi: cilin vendim projektimi keni marrë dhe pse, cilin rast të skajit keni trajtuar dhe si, cilat raste keni përjashtuar qëllimisht? Rendisni 3 supozime në kod që nuk duhet të humbas."
Këshillë: Mos e pranoni kodin e krijuar nga AI pa e kuptuar atë. "Më shpjegoni këtë, çfarë supozime keni bërë?" Pyetja zbulon gabime të fshehura dhe ju lejon të mbroni atë kod, pasi kodi mbetet përgjegjësia juaj. Vendosja e kodit që nuk e kupton në prodhim është si të dërgosh një kontratë pa e nënshkruar atë.
Prompt i dobët / Prompt i fortë
I DOBËT:"Shkruani një funksion renditjeje."(Rezultati: cila gjuhë, çfarë renditet, a është e qëndrueshme, cili është kufizimi i performancës, kodi që është i paqartë dhe ndoshta nuk i përshtatet kërkesës.) FORTË:"Për Java 17, shkruani një metodë që rendit një objekt List<Punonjës> fillimisht sipas departamentit (alfabetik), pastaj sipas pagës. departamenti vjen i fundit.
Prompt i fuqishëm; Përfshin kriterin e renditjes (me dy nivele), rregullin e efekteve anësore (zëvendësimi i origjinalit), sjelljen e pavlefshme dhe pritshmërinë e testit. Pa këto detaje, AI prodhon një zgjidhje të besueshme, por të pasaktë; për shembull mund të korruptojë listën origjinale dhe kjo do të çojë në një gabim të heshtur diku tjetër.
Vërtetimi me rastet e skajit dhe mostrat e vogla
Kodi që funksionon në skenarin e lumtur nuk është kodi i saktë. Forco me vetëdije çdo funksion të prodhuar:
Lloji i kasës së skajit
të dhëna të mostrës
sjelljen e pritur
hyrje bosh
Varg/varg bosh
Jo një gabim, rezultat logjik bosh
Zero/negativ
0, -1
Sjellje e përcaktuar dhe korrekte
vlerë të madhe
Miliona rekorde
Kontrolli i tejmbushjes/performancës
nul/e pacaktuar
mungon hapësira
Gabim i kontrolluar ose parazgjedhje
Dublikatë / e pazakontë
rendi i përsëritur, i kundërt
rezultat i saktë
Mini Rastet
Rasti 1 - Gabim i heshtur rrumbullakimi. AI shkruan një funksion që mbledh para me lloje dhjetore (float); 0,1 + 0,2 jep 0,300000000000000004. Gabimi zgjidhet kur inxhinieri shton rregullin "Rrumbullakosni në 2 shifra dhe përdorni qindarka të tëra". Një rregull me 3 rreshta parandalon mijëra qindarkë mospërputhje në rakordimin mujor.
Rasti 2 — Kurthi i efekteve anësore. AI shkruan një metodë që "rrjedh" një listë, por modifikon listën origjinale në vend. Ndodh sjellje e papritur sepse një modul tjetër përdor të njëjtën listë. Nëse kufizimi "ndrysho origjinalin" do të ishte në prompt, gabimi nuk do të ndodhte kurrë; kapet në rishikimin e kodit dhe parandalon 2 orë korrigjim.
Rasti 3 - Fitimet hap pas hapi. Një zhvillues printon një modul importi me 150 rreshta menjëherë; Kur gjen një gabim, nuk mund ta gjejë se nga ka ardhur. Një zhvillues tjetër e ndan të njëjtën punë në 5 hapa të vegjël, teston çdo hap në 2 minuta dhe e kap gabimin menjëherë në hapin e 3-të.
Gabimet e zakonshme
- Printimi i blloqeve të mëdha me një kërkesë. Lindi një kod i rrezikshëm që është i vështirë për t'u kuptuar dhe korrigjuar.
- Kërkoni një kod pa dhënë një kontratë. Nëse gabimi input-output është i paqartë, AI do të hamendësojë dhe do të jetë i gabuar.
- Vetëm duke testuar skenarin e lumtur. Nëse nuk provohet inputi bosh, null, negativ dhe i madh, gabimi lihet në prodhim.
- Pranimi pa kuptuar. Kodi që nuk e zbuloni është një borxh që nuk mund ta mbroni.
- Injorimi i llojeve të ndjeshme si efektet anësore dhe paratë/data. Lëshimi i parave me histori të përjetshme është një burim klasik gabimi.
Në përmbledhje
Shkrimi i kodit me AI është programim i disiplinuar i çifteve: kontratë e qartë, hapa të vegjël, ndërtim dhe testim në çdo hap. Dhënia e kuartetit input-output-error-constraint që në fillim përcakton cilësinë e kodit. Shpjegimi i kodit që prodhon dhe detyrimi i tij me rastet e skajeve nxjerr në sipërfaqe gabimet e fshehura nën skenarin e lumtur. Burimi i shpejtësisë nuk është pranimi i verbër; është draft i shpejtë plus verifikim i shpejtë.
Detyra e aplikimit
Zgjidhni një funksion të vogël por real (p.sh. totali i shportës, ndryshimi i datës, analizimi i tekstit). Printoni duke përdorur kërkesën e funksionit të kontraktuar; Shtoni të paktën 5 skenarë testimi pranë tij. Ekzekutoni kodin dhe provoni 5 rastet e skajeve me vetëdije, duke përdorur tabelën si udhëzues. Gjeni një gabim në të paktën një rast (nëse jo, dizajnoni një hyrje të re për të detyruar funksionin), rregulloni atë me AI dhe verifikoni duke ritestuar nëse rregullimi funksionoi.
listë kontrolli
- [ ] Kam shkruar një kontratë që përfshin hyrjen, daljen, gabimet dhe kufizimet.
- [ ] E gjenerova kodin me hapa të vegjël në vend të një blloku të madh.
- [ ] Shtova një bllok testi/kampion ekzekutimi pranë kodit.
- [ ] Unë kam testuar me vetëdije të paktën 5 raste të skajeve.
- [ ] I shpjegova kodin AI dhe rishikova supozimet e saj.
- [ ] E korrigjova gabimin e gjetur dhe e konfirmova rregullimin duke ritestuar.