Cum să înțelegeți codul sursă al unui astfel de proiect ca mysql

Căutarea de utilizare și definiții este foarte utilă. În orice IDE există. În Vim / Emacs / Alte plug-in-uri sunt implementate.

Ei bine, nu te astepta ca vei invata codul sursa doar prin lectura si vei intelege bine.





Acest lucru nu se întâmplă.
În primul rând, decideți ce trebuie să vă uitați la sursă. Productivitate mică - facem profiler, căutăm blocaje. Urcăm în cod, optimizăm, testează. Repetați câteva iterații.
Nu este suficientă funcționalitate? De exemplu, dorim să adăugăm un tip nou. Căutăm module care implementează funcționalități similare. Noi facem tipul nostru asemănător celor existente. Testează serverul, replică. Profilatorul este configurat, etc.






Și acum ați dat deja niște părți.

Și fără scopul de a urca în cod, asta ar deveni "specialist" - nimic nu va veni din ea.

Dezvoltator full-stack (Symfony, Angular)

1) înțelegeți ce este pentru fiecare fișier, încercăm să estimăm imaginea generală a ceea ce constă din proiect (ce componente, module etc.). În acest lucru putem ajuta numeroase articole și documente oficiale. descriind arhitectura proiectului.

2) mai mult nevoie de suflet doar pentru un motiv și nu doar. Să spunem dacă sunteți interesați de anumite lucruri. De exemplu. De ce studiați dispozitivul MyISAM doar dacă există foarte puțini oameni care îl folosesc?

În general, fshp a spus corect totul.

Desigur, dacă setați un obiectiv: "cu un pumn" pentru a înțelege proiectul, care a fost făcut de o echipă largă de specialiști, atunci nu va mai fi prea mult. Mai ales în absența unei bune experiențe practice în limba în care este scris proiectul. Dar dacă setați obiectivul de a stăpâni exact acest lucru (acest lucru nu contează, MySQL, nucleul Linux, Eclipse IDE, ReactOS.), Asta e bine. La început, oricare dintre ele pare a fi un labirint gigantic, pe care nu îl veți învăța niciodată prin inimă. Dar, crede-mă, este doar la început.
Și da, sunt de acord cu fshp.
Nu vă așteptați să învățați codul sursă prin simpla citire a acestuia
Trebuie să învățați cum să colectați acest proiect. Apoi, învățați cum să efectuați modificări (în cutia de nisip) pentru a efectua experimente. Și numai după ce a stăpânit cu încredere practica de a aduce modificări la proiect, treceți la lucruri mai serioase în ea.

În general, chiar ideea și dorința de a înțelege bine structura unui binecunoscut proiect deschis sunt demne de laudă. În orice caz, veți obține o experiență neprețuită. Învățați să tolerați codul altcuiva, să înțelegeți sau să anticipați cursul de gândire al altor persoane. Poate că, de asemenea, va trebui să "studiați" proiectul altcuiva conform ordinelor angajatorului. Cine știe, dacă înțelegeți bine acest proiect, puteți să vă alăturați echipei Oracle și să deveniți unul dintre cei mai importanți dezvoltatori? ;)

P / S
Nu vreau să arunc o piatră spre comanda MySQL, dar un fișier de 20K de coduri este, IMHO, o etichetă "cod miros". Deși cine sunt eu să judec. ;)

Trebuie să învățați cum să colectați acest proiect.

Nu, nu, nu. Kernel-ul Linux este fixat pe ura, acolo structura este foarte buna. Se joaca cu devbordami, am rs323 șofer Prelucrare stropire, și un driver de afișare, și o mulțime de lucruri chiar miezul de produse cosmetice. Aceasta este în ciuda faptului că eu sunt un noob în C noob, iar Google nu a spus nimic, în cazul în care pentru a găsi și cum să corecteze zapatchit. O dată chiar și pe un software aleatoriu GPIO a scris kostylische RS232 epic, dar nu invers cu curba buștenilor jucător nu-l, și a câștigat, chiar dacă o rată de eroare de infernal.
Nimic de învățat nu este necesar, avem nevoie doar de un scop clar - logic totul este acolo. Și cu cât mai mult veți săpați într-un anumit scop, cu atât cunoașterea proiectului va fi mai extinsă.

Ilia. poate aveți o intuiție bună, dacă găsiți rapid "unde" și "ce" trebuie să editați.
„Nu este necesar pentru a preda“ despre - ei bine, depinde de ce scopul dumneavoastră: să scrie „în grabă“, patch-uri sau afacere în proiect să se alăture echipei. Ei bine, sau doar pentru distracție, pentru dezvoltarea generală, ca să spun așa. În consecință, obiective diferite - abordări diferite.
Dar, în general, sunt de acord cu tine.







Articole similare

Trimiteți-le prietenilor: