Jedinica 3 / 12

Čitanje koda, objašnjenje i kompatibilnost sa novom bazom koda

Dobici:

  • Sposobnost mapiranja baznog stranog koda sloj po sloj pomoću AI i praćenja karakteristike od kraja do kraja
  • Sposobnost objašnjavanja složenih funkcija korak po korak i praćenja toka podataka
  • Sposobnost sagledavanja AI opisa kao hipoteze i verifikacije kritičnih tvrdnji u kodu

Programeri čitaju kod radije nego pišu kod. Kada započnete novi posao, preuzmete uslugu koju je ostavio neko drugi ili doprinesete biblioteci otvorenog koda, vaš prvi zadatak je "šta se ovde dešava?" je pronaći odgovor na pitanje. AI može svesti ovaj zadatak otkrivanja na sate, a ne na sedmice - ali samo kada se koristi s pravim pitanjima i refleksom verifikacije.

U ovoj jedinici učimo da koristimo AI kao „vodič koda“: mapiranje strane baze koda, prevođenje složene funkcije na običan jezik, praćenje protoka podataka i pronalaženje načina za korištenje biblioteke. Zlatno pravilo je da je objašnjenje AI hipoteza; to potvrđujete samim kodom.

Zašto je označavanje koda moćno, ali rizično?

LLM je vrlo dobar u čitanju dijela koda i prevođenju na ljudski jezik, kao što je "ova funkcija osvježava token sesije korisnika"; jer je naučio obrasce iz miliona sličnih primjera. Ovo je velika ušteda vremena, posebno kod dugih i ugniježđenih funkcija.

Evo rizika: model ponekad govori šta kod izgleda čini, a ne šta zapravo radi. Ako je ime varijable isAdmin, ali je logika unutra obrnuta, model može pogledati ime i izvući pogrešan sažetak. Stoga, prije nego što izjavu učinite osnovom za svoje kritične odluke, trebali biste vizualno provjeriti navodno ponašanje na relevantnim linijama. Opis vas vodi na pravo mjesto; Kod ima posljednju riječ.

Oprez: Ne računajte sažetak AI-a "ovaj kod radi X" samo kao dokaz u odluci koja uključuje sigurnost ili protok novca. Sažetak je mapa koja pokazuje gdje tražiti; Potvrdu dajete u kodu.

Koraci za mapiranje baze stranog koda

  1. Počnite na najvišem nivou. Prvo se upoznajte sa strukturom foldera i ulaznim tačkama (glavni, pokretanje aplikacije, kućni ruter). Pitajte AI "koji su slojevi aplikacije zasnovani na ovoj strukturi direktorija?" pitaj.
  2. Pratite funkciju od kraja do kraja. "Koje datoteke se aktiviraju i kojim redoslijedom kada se korisnik prijavi?" — gledanje jednog toka je poučnije od čitanja cijele arhitekture.
  3. Lokalizirajte pojmove. Zatražite od AI koncepte specifične za projekat ("stanar", "knjiga", "pokretač posla") i pronađite njihove ekvivalente u kodu.
  4. Pojednostavili ste kompleksnu funkciju. Neka duga funkcija bude objašnjena korak po korak, a zatim označite te korake u kodu.
  5. Verify. Napravite malu promjenu i pokrenite testove kako biste provjerili svoje razumijevanje; Test vam odmah govori ako je vaše razumijevanje pogrešno.

Tri mini futrole

Slučaj 1 — Naslijeđena usluga je smanjena sa 2 dana na 3 sata. Programer je preuzeo uslugu usklađivanja plaćanja sa 4.000 redova od kolege koji odlazi. Imao je AI da sumira module i prati tok plaćanja od kraja do kraja; Lično je provjerio dvije kritične funkcije u kodu. Otkriće, za koje je procijenjeno da će trajati 2 dana uz klasično "čitanje na slijepo", završeno je za otprilike 3 sata uz provjerenu AI metodu.

Slučaj 2 — Zamka za lažno ime. Jedna funkcija se zvala validateAndSave, ali u sažetku AI je pisalo "prvo provjerava, pa čuva". Kada je programer ušao u kod, vidio je da je spremanje obavljeno prije verifikacije, a verifikacija je samo zapisala u dnevnik. Ovo je bio pravi uzrok greške u proizvodnji. Ako u kodu nije bilo validacije, lažni sažetak bi sakrio grešku.

Slučaj 3 — Ubrzano učenje nove biblioteke. Tim je namjeravao integrirati biblioteku reda poruka sa kojom nisu bili upoznati. Pitao sam AI "kako podesiti potrošača u ovoj biblioteci, kako pokušati ponovo u slučaju greške?" Pitali su i dali su dati uzorak; Zatim su uporedili primjer sa službenim dokumentom i ispravili razliku (stara verzija API-ja). Vrijeme učenja je prepolovljeno.

Četiri predloška koji se mogu kopirati

Mapiranje kodne baze:

Ispod je lista direktorija/fajlova projekta. 1) Izdvojite slojeve aplikacije (ulaz, poslovna logika, pristup podacima, itd.). 2) Navedite moguće putovanje u fajlu "{{example property}}" zahtjeva. 3) Označite područja za koja niste sigurni kao "moraju biti provjerene". {{directory_list}}

Opis funkcije (korak po korak):

Podijelite ovu funkciju u grupe redova i objasnite na čistom turskom što svaka grupa radi. Konačno: navedite ulaz, izlaz, nuspojave (baza podataka/fajl/mreža) i moguće rubne slučajeve. Sakupite ponašanja za koja niste sigurni u ODVOJENI naslov "mora se provjeriti".{{function}}

Praćenje toka podataka:

Odakle dolazi vrijednost "{{varijable/data}}", kroz koje transformacije prolazi, gdje je upisana? Kreirajte lanac toka koristeći imena funkcija u kodu. Povezani kod: {{code_segments}}

Naučite kako koristiti biblioteku:

Želim napraviti {{purpose}} sa {{bibliotekom}}. Navedite minimalan, radni primjer. Uvjerite se da svaka funkcija koju koristite zapravo pripada ovoj biblioteci; ako niste sigurni, označite "provjeri iz službene dokumentacije". Verzija: {{verzija}}.

Slaba prompt / Jaka prompt

Slabo: "Objasnite ovaj kod." (Šta se pitate? Na kom nivou? Šta ćete raditi?)
Snažan: "Preuzimam ovu funkciju i promijenit ću logiku ponovnog pokušaja u njoj. Objasnite funkciju korak po korak, posebno u slučaju greške, jasno navedite koliko puta i u kom intervalu pokušavate ponovo; označite dijelove za koje niste sigurni kao 'moraju biti provjereni'. [kod]"

Jaka verzija daje vašu namjeru (promijenit ću logiku ponovnog pokušaja) i fokus; tako da objašnjenje nije opšti sažetak već koristan vodič.

Quest

AI radi dobro

Obavezno provjerite

Opšti sažetak arhitekture

Uklonite slojeve

Stvarna sekvenca poziva

složena funkcija

Korak po korak objašnjenje

Obrnuta logika, nuspojave

tok podataka

Izrada lanca

Uslovne grane, preskočene staze

Korišćenje biblioteke

Generisanje uzorka

Autentičnost i verzija API-ja

Nema zamjene za ljudsko razumijevanje

AI opis nije zamjena za učenje; to ubrzava. Zaista “posjedovati” kodnu bazu znači izgraditi njen mentalni model, a taj model odgovara samo dok čitate kod, pravite male promjene i vidite rezultat. Koristite veštačku inteligenciju kao što bi vam mentor rekao „pogledajte ovde, ovo je važno“ — ali pročitajte gde to vidite svojim očima.

Savjet: Kada mislite da razumijete funkciju, zamolite AI da je „sažme u jednu rečenicu“; Zatim uporedite sa svojom rečenicom. Ako su dvije rečenice u suprotnosti jedna s drugom, ili ste vi ili model nešto propustili — i vi to riješite u kodu.

Uobičajene greške

  • Razmotrite sažetak kao dokaz. Donošenje odluke o kodu bez provjere opisa znači upadanje u zamku pogrešnih imena.
  • Lijepljenje prevelikih komada. Sumiranje 2.000 redova odjednom daje površne rezultate koji su skloni greškama; podijeliti na komade.
  • Ne navodeći svrhu. Ako ne kažete "šta ćete raditi", opis ostaje opšti i ne fokusira se na vaš posao.
  • Ne provjerava valjanost instance biblioteke. Model može pozvati zastarjeli ili nepostojeći API; Uporedite sa zvaničnim dokumentom.
  • Davanje svega učenja. Rad samo sa apstraktima bez čitanja baze koda ostavlja vas bespomoćnim kod prve prave greške.

Ukratko

AI je moćan vodič u istraživanju strane kodne baze: mapira arhitekturu, pojednostavljuje složene funkcije, prati protok podataka, podučava korištenje biblioteke. Ali svako objašnjenje je hipoteza. Jasno razjasnite svoju poentu, razdvojite je i provjerite u kodu i testirajte svaku kritičnu tvrdnju za koju model kaže (a ne) "mora biti provjerena". Vodič je AI; Vi ste taj koji čita mapu i snosi odgovornost.

Zadatak aplikacije

Odaberite modul koji vam nije poznat ili koji ste upravo naslijedili. Prvo, izdvojite slojeve i putovanje kroz datoteku funkcije pomoću šablona "mapiranje baze koda". Zatim neka najkritičnija funkcija te funkcije objasni korak po korak sa šablonom "objašnjenje funkcije". Konačno, lično provjerite u kodu najmanje dvije tvrdnje koje je model označio kao „mora se provjeriti“ i zabilježite jesu li istinite ili netačne.

kontrolna lista

  • [ ] Ja tretiram AI izjavu kao hipotezu i provjeravam je u kodu.
  • [ ] Dok objašnjavam kod, dodajem svoju svrhu i fokus na prompt.
  • [ ] Sažimam veliku bazu koda dijeleći je na dijelove.
  • [ ] Provjeravam kritične tvrdnje na mreži za lažne zamke imena/obrnute logike.
  • [ ] Uspoređujem primjere biblioteke sa službenim dokumentom i verzijom.
  • [ ] Koristim AI kao vodič za ubrzanje učenja, a ne kao zamjenu za učenje.