Analiza kode: goto rabimo po pameti

Matej Huš

12. feb 2015 ob 21:21:38

Eno izmed prvih in najgloblje vcepljenih pravil programiranja je izogibanje stavkov goto. Niso prepovedani, saj jih številni jeziki čisto lepo podpirajo, a sodijo v kategorijo grdega programiranja. Njihova uporaba je nezaželena, ker se ob nebrzdani uporabi program hitro zapaca v nerazumljivo kodo in ker je vzdrževanje takšne programske opreme bistveno težje. Dokazano je, da lahko vsak program napišemo brez stavka goto, če ga primerno strukturiramo.

Kljub temu so stavki goto trmasto ostali in v nekaterih primerih je njihova uporaba smiselna. Zasloveli so seveda v pismu nizozemskega velikana računalništva Edsgerja Dijkstre iz leta 1968, v katerem je stavke goto označil kot škodljive. Debata v naslednjih desetletjih je bila živahna, saj so nastopali argumenti za in proti, tabora pa sta še danes dva. Nekateri bi stavke goto prepovedali, drugi v njih načeloma ne vidijo nič slabega. Dejstvo pa je, da se še danes uporabljajo.

Zato je zanimivo vprašanje, koliko komercialne kode, ki ni ravno vzor elegantnega programiranja, uporablja stavek goto. Skupina raziskovalcev iz ZDA, Kanade, Čila in Japonske je izvedla empirično študijo (članek), v kateri so analizirali približno 11 milijonov vrstic C-jevske kode iz 11 tisoč projektov in ugotovili, da razširjenost stavkov goto ne predstavlja perečega problema. Njegova uporaba je živa, a ga programerji uporabljali v zmernih količinah na primernih mestih. Stavke goto so uporabljali za upravljanje napak (80 %) in čiščenje po koncu procedur. Analiza revizij projektov je pokazala, da stavkov goto po izidu v popravkih programske opreme niso odstranjevali, kar kaže na premišljeno rabo na primernih mestih.