Cum de a înțelege codul altcuiva, Dou

Înainte de a trece la o gramada de text, uita-te la codul și să înțeleagă ce face:

Cum de a înțelege codul altcuiva, Dou

Astfel de dezvoltatori a scrie. Cineva nu a înțeles deloc, cineva doar ghici ce face acest cod. Dar există o modalitate de a înțelege. Pe ea va fi mai mic.

1. Codul devine moștenit. Atunci când adăugați pentru cineva, și trebuie să estimeze cât timp va dura finalizare.
2. Codul dvs. pentru a termina pe cineva, care a făcut modificări la alți dezvoltatori, și trebuie să înțeleagă ce a terminat de scris.
3. Codul de revizuire. Spre deosebire de primele două prin aceea că aceasta ar trebui să fie făcut înainte de codul intră în depozit / producție.

Ce trebuie să înțeleagă codul altor oameni?

Prima problemă cu care vă confruntați, uita la codul altor oameni, - determina unde pentru a face modificări. În acest scop, căutarea în funcție de diferite criterii.

A treia problemă - logica de neînțeles. Puteți citi codul, dar nu înțeleg de ce sa făcut în acest fel.

Cum de a găsi locul potrivit în codul?

Am găsit locul potrivit, dar pentru a înțelege logica?

Avem aici codul de mai jos:

Cum de a înțelege codul altcuiva, Dou

Avem o inițializare matrice, care se numește „alimente“, apoi a crea un obiect de „pisică“, și apoi într-un fel echivala pisica de a mânca și stochează într-o serie de produse alimentare. Această logică numai înțeles dacă site-ul nostru vinde shawarma. Chiar daca munca ta este - pentru a crea o altă pisică, îl adăugați, dar va fi din nou enumerate într-o serie de produse alimentare. Și de ce face acest lucru - va rămâne un mister.

Bune practici - reciti cerințele, să fie conștienți de zona de subiect și pentru a înțelege de ce a fost pus în aplicare în acest fel.

Un exemplu de un complex de la începutul articolului:

Cum de a înțelege codul altcuiva, Dou

Nimeni nu a anulat bun debugger vechi și pas prin, dar este încă necesară cunoașterea zonei subiect.

Cauzele cod complexe

Ce numim cod rău?

- „cod de spaghete.“ Nu este cea mai populară opțiune. Trei metode, fiecare dintre care face ceva. Corpul apeluri de funcții sunt alte metode, și chiar ochii, este imposibil de a urmări lanțul care este numit de la. Cod confuz, cum ar fi spaghete într-un castron.

Cum de a înțelege codul altcuiva, Dou

- "Oase". Acest cod este foarte mult. Developer a scris o serie în care el este de a face ceva cu elementele unui tablou pe care există acest ciclu. Și avertizează că apelul metoda doSomething la o anumită valoare aruncă o eroare. El pur și simplu spune că în cazul în care valoarea de matrice - 4, este necesar să-l sări și du-te la următorul. El a avut în vedere această situație și a făcut o „copie de rezervă“, astfel încât să nu confunde a fost golit. Dar acest lucru, el a creat alte situații care creează alte situații excepționale, atunci când ceva nu pare prea mult sau par. Dezvoltatorul, de asemenea, va continua să se bazeze pe alte oase, suprapunându-se din greșeală.

Cum de a înțelege codul altcuiva, Dou

Cum de a înțelege codul altcuiva, Dou

Cum de a trăi?

exemple reale ușor de găsit Puteți citi dacă sunteți interesat. Acesta este un exemplu real (ar fi bine chiar și cu o indicație a faptului că aici ne-am numit functia xxx, iar aici proinlaynili 100,500 linii) și nu va?
.
UPD.
Ultimul lucru pe care mi amintesc exact vazut de comunitatea open source - boofcv. Iată o bucată gustoasă de Kuang. Dacă aș fi găsit.
github.com/. ockPyramid.java
Ceea ce a fost făcut pentru a optimiza?

Căutătorul găsește da. Acest cod este foarte rapid, nu există nici un allokeyshnov în plus, toate buffer pereispolzuyutsya, o parte din operațiunile considerate anterior în afara buclei (care sunt utilizate fără variabile intermediare nume semnificative), rotunjiri chiar este considerat mai rapid, în cazul în care puteți profita de faptul că numărul de non-negativ.

În general, dacă vă face mai bine / mai rapid / mai frumos, atunci eu (și nu numai eu) voi fi bucuros, sunt recunoscător și fericit pentru a trece la bibliotecă. Doar nu interpretează acest lucru ca „primul Bring It On“ - într-adevăr ar fi foarte util, și soluție interesantă pentru astfel de probleme 95 (sau poate 99) la suta din ceea ce facem.

Dacă, cu toate acestea, cred că nu există nici o iertare a scrie aceste rânduri, vă sugerez pentru a opri discuția ca lipsită de har.

în cazul în care codul nu exista comentarii despre logica non-triviale, în cazul în care nu există o serie de documente care vor ajuta să înțeleagă această logică non-triviale, de ce acest cod nu govnokod? astăzi pe codul funcționează cu expertiză specială în zona exploziei care nu au nevoie de aceste kamenty, și mâine el este în concediu medical și se înlocuiește cu Washi formoshlep obișnuite. dar necesitatea de a menține acest cod nu va merge departe. și aici kamenty și link-uri către resursele necesare pentru a formoshlepa Washi poate ajuta salva o mulțime de timp și a fixat un bug banal (de standardele La Spezia).

Să începem cu faptul că nu voi lua cu privire la proiect, care are o logică non-triviale formoshlepa Vasya - lasă-l să scrie operden.

Este tot ce este scris despre modele, ci pentru că, de asemenea, nu sunt evidente pentru unele formoshlepam. Nu scrie același lucru în fiecare link vizitore la un wiki sau carte GOF pe Amazon.