Deo zbornika Uvod u programiranje kroz C
Imenovanje promenljivih
Imenovanje promenljivih veoma je važno za razumljivost programa i sve je važnije što je program duži. Imena promenljivih i funkcija (pa i datoteka) treba da sugerišu njihovu ulogu i tako olakšaju razumevanje programa.
Imenovanje globalnih promenljivih
Globalne promenljive, strukture i funkcije treba da imaju opisna imena, potencijalno sačinjena od više reči. U kamiljoj notaciji (popularnoj među Java i C++ programerima), imena od više reči zapisuju se tako što svaka nova reč (sem eventualno prve) počinje velikim slovom, na primer, brojKlijenata
. U notaciji sa podvlakama (popularnoj među C programerima), sve reči imena se pišu malim slovima a reči su razdvojene podvlakama, na primer, broj_klijenata
.
Imena makroa i konstanti pišu se obično svim velikim slovima, a imena globalnih promenljivih počinju velikim slovom.
Imenovanje lokalnih promenljivih
Lokalne promenljive, a posebno promenljive koje se koriste kao brojači u petljama treba da imaju kratka i jednostavna, a često najbolje, jednoslovna imena – jer se razumljivost lakše postiže sažetošću. Imena za brojače u petljama su često i
, j
, k
, za pokazivače p
i q
, a za niske s
i t
. Preporuka je i da se lokalne promenljive deklarišu što kasnije u okviru funkcije i u okviru bloka u kojem se koriste (a ne u okviru nekog šireg bloka).
Jedan, delimično šaljiv, savet za imenovanje (i globalnih i lokalnih) promenljivih kaže da broj karaktera u imenu promenljive treba da zavisi od broja linija njenog dosega i to tako da bude proporcionalan logaritmu broja linija njenog dosega.
Imenovanje funkcija
Za promenljive i funkcije nije dobro koristiti generička imena kao rezultat
, izracunaj()
, uradi()
i slično, već sugestivnija, kao što su, na primer, kamata
, izracunaj_kamatu()
, odstampaj_izvestaj_o_kamati()
.
Imena funkcija dobro je da budu bazirana na glagolima, na primer, izracunaj_kamatu()
, umesto kamata()
i get_time()
umesto time()
. Za funkcije koje vraćaju istinitosnu vrednost, ime treba da jasno sugeriše u kom slučaju se vraća vrednost tačno, na primer, bolje je ime is_prime()
nego check_prime()
.
Prefiks na osnovu tipa
Mnoge promenljive označavaju neki broj entiteta (na primer, broj klijenata, broj studenata, broj artikala) i za njih se može usvojiti konvencija po kojoj imena imaju isti prefiks ili sufiks (na primer, br_studenata
ili num_students
. U ovom smislu, znatno dalje ide mađarska notacija. Postoje zapravo dve varijante mađarske notacije: sistemska i aplikacijska. U sistemskoj mađarskoj notaciji ime promenljive počinje uvek slovom ili slovima koja odgovaraju njenom tipu, na primer, uBrojKlijenata
može da bude promenljiva tipa unsigned int
.
Ideja je da se na ovaj način tip promenljive vidi na svakom mestu gde se ona koristi (pa ne mora da se proverava njena deklaracija). U aplikacijskoj mađarskoj notaciji, ime promenljive se kreira na osnovu njene uloge u programu, a ne na osnovu tipa. Na primer, imena promenljivih mogu da počinju sa rw
i col
i označavaju poziciju kurzora u dokumentu. Jedan par takvih promenljivih mogu da budu, na primer, rwOutputWindow
i colOutputWindow
. Ove dve promenljive su istog tipa, ali nema smisla vrednost jedne pridružiti drugoj i to sugerišu izabrani prefiksi (te se lako mogu primetiti neka pogrešna izračunavanja).
Mađarska notacija (posebno „sistemska“) ima mnogo kritičara (uključujući Torvaldsa) koji smatraju da je informacija o tipovima ionako poznata kompilatoru a da dodatni prefiksi više zbunjuju programera nego što mu pomažu.
Maternji vs. engleski jezik
I programeri kojima to nije maternji jezik, iako to nije zahtev projekta, često imenuju promenljive i funkcije na osnovu reči engleskog jezika. To je posledica istorijskih razloga i dominacije engleskog jezika u programerskoj praksi, kao i samih ključnih reči skoro svih programskih jezika (koje su na engleskom). Prihvatljivo je (ako nije zahtev projekta drugačiji) imenovanje i na maternjem jeziku i na engleskom jeziku — jedino je neprihvatljivo mešanje ta dva.
Imenovanje na bazi engleskog i komentari na engleskom mogu biti pogodni ukoliko postoji i najmanja mogućnost da se izvorni program koristi u drugim zemljama, ili od strane drugih timova, ili da se učini javno dostupnim i slično.
Test razumljivosti
Kvalitet imenovanja promenljivih i funkcija može se „testirati“ na sledeći zanimljiv način: ako se kôd može pročitati preko telefona tako da ga sagovornik na drugoj strani razume, onda je imenovanje dobro.
Izvor: Predrag Janičić i Filip Marić, PROGRAMIRANJE 2, Osnove programiranja kroz programski jezik C, Matematički fakultet, Beograd, 2017.