Njësia 2 / 12

Scripting dhe AutoComplete

Fitimet:

  • Aftësia për të hartuar modalitetin e bisedës për të korrigjuar llojin e detyrës me përfundimin e linjës
  • Aftësia për të shkruar kërkesa të fuqishme prodhimi që përfshijnë kontrata hyrëse/dalëse, rastet e skajeve dhe kufizimet e stilit
  • Aftësia për të vërtetuar kodin e krijuar dhe çdo varësi të re të propozuar përpara bashkimit

Pika e parë e kontaktit të një zhvilluesi me AI është shpesh plotësimi automatik - një veçori që sugjeron rreshtin tjetër ndërsa shkruani - ose duke thënë "shkruani atë funksion" në një dritare bisede. Ata të dy përdorin të njëjtin motor, por kërkojnë disiplina të ndryshme. Në këtë njësi, ne e transformojmë gjenerimin e kodit nga një "shkrim" i rastësishëm në një hap inxhinierik, prodhimi i të cilit është i parashikueshëm dhe i verifikueshëm.

Qëllimi është ta ktheni AI nga një mjet që përshpejton makinën tuaj të shkrimit në një nxënës që punon brenda kufizimeve që keni vendosur. Një nxënës i udhëhequr mirë kursen kohë; Një nxënës i padrejtuar krijon një rrëmujë që duhet ta pastroni më vonë.

Dy mënyra përdorimi: Përfundimi në linjë dhe biseda

Përfundimi inline hyn në lojë ndërsa shkruani në redaktorin tuaj; Ju shkruani një nënshkrim funksioni ose një linjë komenti dhe ai sugjeron pjesën tjetër. Është i shkëlqyeshëm për shpejtësinë, por ka një kontekst të ngushtë: sheh kodin vetëm në zonën e afërt. Kjo është arsyeja pse funksionon më mirë kur shkruani qartë qëllimin tuaj në një koment. Për shembull, emaili //validate i përdoruesit, hedh ValidationError nëse komenti i pavlefshëm përmirëson ndjeshëm sugjerimin e mëposhtëm.

Modaliteti i bisedës është për detyra më të mëdha dhe të strukturuara: "Shto faqezim në këtë klasë", "Nxjerr një ndërfaqe të atij shërbimi". Këtu keni luksin të jepni rol, kontekst dhe format. Rregulli i përgjithshëm është: përfundimi për detyra të vogla dhe rrjedhëse, biseda për detyra që kërkojnë mendim dhe strukturë.

Këshillë: Mos e pranoni verbërisht sugjerimin e plotësimit me "Tab". Lexoni rreshtin e sugjeruar për një sekondë; Një emër i gabuar variabli ose një gjendje e përmbysur më së shpeshti rrjedh nga këtu.

Hapat për të përkthyer qëllimin në kod

  1. Përcaktoni kontratën. Cila është sjellja e hyrjes, e daljes dhe e gabimit të funksionit? Si "Merr email, normalizo nëse është i vlefshëm, hedh gabim nëse është i pavlefshëm".
  2. Tregoni kufizimet. Nuk përdorni varësi të jashtme? Një udhëzues specifik stili? A ka një kufi të performancës?
  3. Jep një shembull. Një çift hyrje-dalje (“ali@x.com → valid, ali@ → gabim”) e zhvendos kuptimin e modelit për qëllimin nga parashikimi në saktësi.
  4. Kërkoni copa të vogla. Një funksion, një përgjegjësi. Pastaj kaloni te tjetra.
  5. Lexoni dhe ekzekutoni kodin e krijuar. Përpilimi + një përpjekje e shpejtë manuale është hapi më i lirë i sigurimit.

Tre Mini Rastet

Rasti 1 — Prodhimi i drejtuar nga komentet rrit saktësinë. Një zhvillues fillimisht kërkoi një funksion analizimi datash me një trup bosh dhe mori rezultatin e saktë në 3 raunde. Në përpjekjen e dytë, kur përcaktova funksionin me një koment me 4 rreshta (formatet e pranuara, rregulli i zonës kohore, kushti i gabimit) dhe e kërkova, erdhi kodi që funksionoi në raundin e parë. I njëjti model, e njëjta ditë; ndryshimi ishte vetëm qartësia e qëllimit.

Rasti 2 - Mos specifikimi i një versioni është i shtrenjtë. Një ekip luftoi me API-në e vjetër të bazuar në kthimin e thirrjeve që zëvendësoi fs.promises në kodin e prodhuar për Node.js. Kur linja "Përdor nyjen 20, ESM, async/prit" u shtua në prompt, prodhimi ndoqi projektin herën e parë; Mesatarja prej 12 minutash të shpenzuara për korrigjim u rivendos.

Rasti 3 - Fitimi real në kodin e pllakës së kazanit. Një mikroshërbim kërkonte 6 DTO të reja (Objekti i Transferimit të të Dhënave - një klasë e thjeshtë e të dhënave që bart të dhëna midis shtresave) dhe rregullat e tyre të vlefshmërisë. Ajo që dikur ishte afërsisht 90 minuta punë manuale u reduktua në 35 minuta kur u prodhua dhe rishikua nga AI; Meqenëse përsëritja e kodit është e lartë dhe modeli është i qartë, AI funksionoi në zonën e saj më efikase këtu.

Katër modele të kopjueshme

Gjenerimi i funksionit të bazuar në kontratë:

Roli: Jeni një zhvillues i zellshëm i {{gjuhës}}. Kontrata e funksionit:- Emri: {{emri}}- Hyrja: {{llojet dhe kuptimi i tyre}}- Dalja: {{lloji dhe kuptimi}}- Statusi i gabimit: {{çfarë hidhet/kthehet kur}}Kufizimet: {{pavarësi të jashtme/stilet/1-1}- {{output_1}}- {{entry_2}} -> {{error_2}}Jepni fillimisht nënshkrimin + planin e shkurtër, më pas kodin. Testet e shkrimit, vetëm funksionojnë.

Për të përputhur stilin ekzistues (përshtatuni me bazën e kodit):

Më poshtë është një funksion shembull nga projekti ynë; Mësoni emërtimin, trajtimin e gabimeve dhe stilin e komentimit këtu. Shkruani një funksion për {{new_detyra}} me të NJËJTIN stil. Shembull: {{current_code}}

Nga skeleti në mbushje (cung → zbatim):

Plotësoni skeletin e funksionit më poshtë sipas TODO-ve në komente. NDRYSHO llojin e nënshkrimit dhe kthimit. Mos bëni një funksion ndihmës që nuk ekziston; nëse është e nevojshme, më njoftoni "ky ndihmës është i nevojshëm". {{skelet_kod}}

Krahasimi alternativ i aplikacioneve:

Jepni 2 implementime të ndryshme për {{detyrë}}: (a) prioritizimi i lexueshmërisë, (b) prioritizimi i performancës. Shkruani 1 fjali "kur është e preferueshme" nën secilën prej tyre.

Prompt i dobët / Prompt i fortë

E dobët: "Më shkruaj një funksion verifikimi me email."
E fortë: "TypeScript 5, vetëm biblioteka standarde. Shkruaj isValidEmail(hyrje: varg): boolean. Shkurto hapësirat, bëje të pandjeshme, a@b.co është e vlefshme, a@, @b.co, vargu i zbrazët është i pavlefshëm. Nëse do të përdorësh regex, mos u bëj shumë komplekse 2 linjash komentesh."

Version i fuqishëm; Rikthen gjuhën, versionin, nënshkrimin, rastet e skajeve dhe një kufizim stili. Kështu, kodi i krijuar funksionon dhe përshtatet në projektin tuaj.

Qasje

Kur të përdoret

Kujdes

Përfundimi në linjë

Futje të vogla në rrjedhë

Mos e pranoni sugjerimin pa e lexuar

Prodhimi i bazuar në kontratë në chat

Funksion/klasë e re

Jepni shembullin dhe rastin e skajit

Prodhimi sipas modelit të stilit

Shtimi në kodin ekzistues

Zgjidhni kodin aktual të mostrës

mbushje skeleti

Nënshkrimi fiks, trupi bosh

Ndryshimi i nënshkrimit

Dyfishimi i kodit dhe kurthi i varësisë

AI shpesh rekomandon një bibliotekë të re për ta bërë më të lehtë punën e saj. Ndonjëherë kjo është e saktë, ndonjëherë shton një varësi të panevojshme në projektin tuaj ose sugjeron një paketë që nuk ekziston (një halucinacion). Rregulli: ju konfirmoni çdo varësi të re. Mos e shtoni në projekt pa verifikuar që paketa ekziston, mirëmbahet dhe ka licencën e duhur. Shumicën e kohës një ndihmës tashmë në projekt është më i mirë se një paketë e re.

Kujdes: Rishikoni linjat e importit të sugjeruara nga AI. Një emër paketë që nuk ekziston (i cili gjithashtu mund t'i ngjajë paketave të rreme të quajtura "typo-squatting") si prish kompilimin dhe përbën një rrezik sigurie.

Gabimet e zakonshme

  • Duke pasur nënshkrimin e përcaktuar nga modeli. Nëse nuk rregulloni llojet hyrëse/dalëse, me çdo prodhim vjen një nënshkrim i ndryshëm dhe integrimi bëhet i vështirë.
  • Për të mos përmendur rastet e skajeve. Input bosh, null, numër negativ, vlerë shumë e madhe — nëse nuk i specifikoni këto, modeli shkruan "rrugën e lumtur", duke kapërcyer skajet.
  • Kombinimi i sugjerimit pa e provuar atë. Kodi që duket se funksionon nuk do të thotë se funksionon.
  • Pranimi i varësisë së panevojshme. Shtimi i një biblioteke të tërë për një linjë të vetme krijon borxh teknik.
  • Mospërputhja e stilit. Emërtimi i ndryshëm dhe trajtimi i gabimeve nga pjesa tjetër e projektit e bëjnë bazën e kodit të paqartë.

Në përmbledhje

Gjenerimi i kodit është i fuqishëm kur e përktheni qëllimin në një kontratë të qartë. Përdorni përfundimin e linjës për detyra të vogla, në rrjedhë dhe për detyra që krijojnë strukturë në bisedë. Ju specifikoni llojet e hyrjes/daljes, rastet e skajeve, versionin dhe stilin; Jepni një shembull të modelit; verifikoni çdo varësi të re; dhe vraponi dhe lexoni çdo pjesë të prodhuar. Inteligjenca artificiale shpërblehet më së miri në kodin formular, të përsëritur - ekzekutojeni atë aty, brenda kufijve që keni vendosur.

Detyra e aplikimit

Zgjidhni një funksion të vogël aktual nga projekti juaj që duhet të shkruani. Fillimisht printojeni atë në AI me shabllonin e "prodhimit të funksioneve të bazuara në kontratë", duke dhënë lloje të hyrjes/daljes, dy rastet e skajeve dhe një kufizim stili. Përpiloni kodin e krijuar dhe provojeni me dy hyrje të ndryshme. Pastaj pyesni përsëri të njëjtin funksion, këtë herë "më shkruaj këtë" pa asnjë kontekst dhe krahasoni dy daljet rresht pas rreshti: cilat rastet e skajeve u munguan, sa korrigjime kërkoheshin?

listë kontrolli

  • [ ] Unë e di se ku të përdor modalitetin e bisedës me përfundimin në linjë.
  • [ ] Përcaktoj kontratën hyrëse/dalëse dhe rastet e skajeve në gjenerimin e funksionit.
  • [ ] E kam bërë zakon të shtoj informacionin e gjuhës dhe versionit në kërkesë.
  • [ ] Unë përpiloj dhe testoj çdo pjesë të prodhuar përpara se ta montoj atë.
  • [ ] Unë konfirmoj çdo varësi të re që AI propozon duke verifikuar ekzistencën dhe domosdoshmërinë e saj.
  • [ ] Kontrolloj që kodi i krijuar përputhet me stilin e projektit.