Četiri stava o čestom pitanju među programerima: Da li je komentarisanje koda uvek korisno i da li je uvek potrebno?

Zahtev da kod bude čitljiv i razumljiv jedna je od okosnica kada govorimo o tome da li ga treba komentarisati.

Sanja Vatić - 21. Maj, 2019.

Treba da komentarišite svoj kod. Oko ove rečenice lako se sukobe mišljenja. Možda zato što je kliše. A kao u svakom klišeu u njoj ima ponešto istine. Odnosno, istina je poslovično negde između, što potvrđuju i iskustva onih koji komentarisanje koda primenjuju u praksi.

Kako se preporuka da komentarišu kod neretko upućuje početnicima, pitali smo iskusnije programere u kojoj meri komentarišu svoj kod i šta bi preporučili svojim mlađim kolegama — komentarisati ili ne? Najčešći argument u prilog tvrdnji da je komentarisanje koda neophodno jeste da ono pomaže da se kod jasno čita. Argument protiv glasi da je kod loše napisan ako je za njega neophodan komentar.

Bez obzira na ova dva sukobljena mišljenja, iskusniji programeri uglavnom komentarišu ono što pišu, ali ne u svim situacijama. Kako kažu, potreba za time se uglavnom javlja onda kada su u pitanju kompleksni delovi koda. U tom smislu, softver developer Vedran Mimić navodi:

Trudim se da iskomentarišem sav kod prilikom čijeg pisanja sam morao da „razmislim”/isplaniram/raspišem/analiziram. Mera u kojoj se to radi zavisi od projekta/taska/dela sistema.

Slično je i sa Srđanom Brkićem, koji je takođe softver developer, i koji kaže da propratnu dokumentaciju piše na vrhu metoda, a:

…u drugim slučajevima samo kada logika nalaže (kada kod postane dovoljno kompleksan). Isto savetujem početnicima i smatram da ne treba olako da se prepuste pisanju komentara, kod treba da bude dovoljno jasan i bez njih.

Sebastijan Vilhamer, programer u gejming industriji, često komentariše svoj kod, a početnicima jednako savetuje da sačekaju sa pisanjem komentara:

Što se početnika tiče, mislim da je pred njima dug put programiranja pre nego što dođe vreme da brinu o pisanju komentara. Za njih je važnije da pišu kod, da ga prepravljaju, brišu i ponovo pišu. Jer svakako većina početničkog koda bude odbačena.

Kada komentarišeš ti zastaješ, razmišljaš, pokušavaš da dobiješ neku vrednost, a to ne možeš pre nego što si napisao određenu količinu koda.

Jedini naš sagovornik koji retko komentariše svoj kod je Miloš Žarković, inženjer informacionih tehnologija. Njegov stav se donekle razlilazi s ostalima. On se generalno protivi komentarisanju jer je mišljenja da ono čini kod nejasnim:

Smatram da količina komentara ne utiče na kvalitet koda, ali velika količina komentara na žalost u većini slučajeva ukazuje na to da kod nije dovoljno jasan, a samim tim ni kavalitetan. Moram da se ogradim, ovde pre svega mislim na moderne high-level jezike.

Međutim, i on je kategoričan po pitanju početnika:

Početnicima bih savetovao da probaju da refaktorišu svoj kod, a da komentare koriste kao poslednju opciju. Verujem da dobrom organizacijom i imenovanjem klasa, metoda i varijabli svaki kod može da postanje čitljiv i razumljiv.

Kada iskusniji (ne) komentarišu?

Upravo je zahtev da kod bude čitljiv i razumljiv jedna od okosnica kada govorimo o tome da li ga treba komentarisati. Zato je uobičajna praksa da kada želiš da pojasniš kod prvo pokušaš da ga napišeš na jednostavniji način, pa tek onda komentarišeš. Ili kako kaže Srđan: „Komentar treba da kaže zašto je nešto urađeno, a kod — kako.’’

S druge strane, naši sagovornici smatraju da nema smisla pisati komentare u kojima se ponavlja šta kod radi ili se služiti komentarisanjem kako bi kod učinili jasnijim. U tom duhu i Srđan napominje da nema smisla pisati očigledne komentare i samo „prljati” kod, a Miloš navodi konkretnu situaciju u kojoj ne bi pisao komentare:

Na primer, kada imamo neku veliku metodu koja radi puno stvari, neko bi došao u iskušenje da stavi komentar iznad svakog koraka kako bi objasnio šta taj deo koda radi. U ovom slučaju ponovo preporučujem refaktorizaciju (razdvajanje celina u manje metode sa smislenim imenima).

Naravno, osim objašnjavanja komplikovanih i osetljivih linija koda ili nekoliko linija koda (za one koji nisu autori ili za sebe), programeri u kod unose i komentare koji im služe kao beleške da npr. rad nije završen. Međutim, po Sebastijanovom mišljenju to je drugačija vrsta problema jer zahteva od programera da se seti i vrati na te komentare. Na ono što su pravi problemi po pitanju komentarisanja osvrće se ovako:

Ako je kod čist, komentari nisu potrebni. Problem je što ne može sav kod da bude takav.

Takođe, jedan od problema je u tome što kada jednom napišete komentar i kasnije mu se vratite obično će biti zastareo jer se kod na koji se odnosi promenio. Imaćete gomilu komentara koji više ništa ne znače ili više nemaju smisla kao što su imali u trenutku kada ste ih pisali.

Da li dobar kod mora da ima komentare?

Za kraj, pitali smo naše sagovornike da li je kod sa puno komentara kvalitetan. Ujedinjeni su u mišljenju da komentari ne utiču na kvalitet koda, pa tako Vedranova ocena glasi da puno komentara može da ima i obrnut efekat. Na istu temu Sebastijan ističe da neke od najboljih linija koda koje je čitao imaju komentare na pravim mestima:

Nema ih previše i savršeno imaju smisla — tu su da bih bolje razumeo kod.

Dakle, ni premalo ni previše. A kakva su vaša iskustva i mišljenja?