{"id":19,"date":"2012-04-22T19:28:37","date_gmt":"2012-04-22T17:28:37","guid":{"rendered":""},"modified":"2018-11-05T20:21:28","modified_gmt":"2018-11-05T19:21:28","slug":"preco-komentovanie-skodi-kodu","status":"publish","type":"post","link":"https:\/\/spireng.sk\/en\/preco-komentovanie-skodi-kodu\/","title":{"rendered":"Pre\u010do komentovanie \u0161kod\u00ed k\u00f3du"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"imgp_img\" style=\"float: left;\" src=\"\/sites\/default\/files\/imagepicker\/1\/4d56as46das.png\" alt=\"Obr\u00e1zok\" width=\"271\" height=\"158\" \/>Toto je \u010dl\u00e1nok, ktor\u00e9ho cie\u013eom je tak trochu naru\u0161i\u0165 stereotyp, ktor\u00fd vl\u00e1dne v oblasti komentovania k\u00f3du. S\u00fa\u010dasn\u00fd stav sa naj\u010dastej\u0161ie popisuje ako: \u201eProgram\u00e1tori m\u00e1lo alebo v\u00f4bec nekomentuj\u00fa k\u00f3d. Mali by ho viac komentova\u0165.\u201c Je to naozaj tak? M\u00f4\u017ee existova\u0165 koment\u00e1r, ktor\u00fd by k\u00f3du \u0161kodil?<!--more--><\/p>\n<p><!--break-->Po\u010fme sa na za\u010diatok trochu zamyslie\u0165, o \u010dom komentovanie je. Hlavn\u00fdm \u00fa\u010delom koment\u00e1rov je (ako u\u017e napoved\u00e1 n\u00e1zov) komentova\u0165. To znamen\u00e1 informova\u0165 o tom, \u010do k\u00f3d vykon\u00e1va. Vysvet\u013eova\u0165 pr\u00edkazy k\u00f3du. A to by mohla by\u0165 v\u00e1\u017ene u\u017eito\u010dn\u00e1 vec. Ale to len v tom pr\u00edpade, \u017ee by som prijal fakt, \u017ee k\u00f3d, ktor\u00fd treba komentova\u0165, je v poriadku. A teda v poriadku je aj samotn\u00e9 komentovanie. Z \u010dias assemblera sme sa u\u017e pohli niekde inde a dnes sa pomerne ve\u013ea programov tvor\u00ed vo vy\u0161\u0161om programovacom jazyku. <span style=\"background: none repeat scroll 0% 0% transparent;\">Na<\/span> vy\u0161\u0161\u00edch programovac\u00edch jazykoch je pekn\u00e9 to, \u017ee s\u00fa krokom smerom od stroja k \u010dloveku. Okrem toho, \u017ee s\u00fa minim\u00e1lne \u010ditate\u013enej\u0161ie sami o sebe, maj\u00fa aj v\u00e4\u010d\u0161iu plastickos\u0165(alebo e\u0161te kraj\u0161ie slovo je \u201etv\u00e1rnos\u0165\u201c), \u010do im umo\u017e\u0148uje presnej\u0161ie pop\u00edsa\u0165 probl\u00e9m, ktor\u00fd k\u00f3d rie\u0161i. Schopnos\u0165 vytvori\u0165 si sadu tried s met\u00f3dami a premenn\u00fdmi, ktor\u00e9 si viete pod\u013ea \u013eubov\u00f4le pomenova\u0165, otv\u00e1ra mo\u017enosti v tom, ako bude vyzera\u0165 vn\u00fatorn\u00fd svet v\u00e1\u0161ho programu. Inak povedan\u00e9, m\u00f4\u017eete ho nap\u00edsa\u0165 dobre. A ak ho nap\u00ed\u0161ete dobre, nemus\u00edte ho vysvet\u013eova\u0165.<\/p>\n<p>To, k \u010domu mierim, je fakt, \u017ee koment\u00e1re m\u00f4\u017eu by\u0165 \u010dasto hrubou z\u00e1platou na zle nap\u00edsan\u00fd k\u00f3d. Pr\u00edkladom (mo\u017eno trochu extr\u00e9mnym) m\u00f4\u017ee by\u0165 zadefinovanie premennej:<\/p>\n<p>\/\/ distance from left margine<\/p>\n<p>int x;<\/p>\n<p>A teraz to sk\u00fasime trochu upravi\u0165:<\/p>\n<p>int distanceFromLeftMargine;<\/p>\n<p>Obidva tieto z\u00e1pisy obsahuj\u00fa rovnak\u00e9 mno\u017estvo inform\u00e1ci\u00ed a s\u00fa si prakticky rovnocenn\u00e9. Rozdiel sa za\u010dne prejavova\u0165 a\u017e pri pou\u017e\u00edvan\u00ed tejto premennej niekde v k\u00f3de. V prvom pr\u00edpade si mus\u00edte pri \u010d\u00edtan\u00ed k\u00f3du v hlave automaticky budova\u0165 prekladov\u00fd slovn\u00edk (&#8230; \u201c\u010co bolo to x?\u201c &#8230; (chv\u00ed\u013eka zamyslenia)&#8230; \u201cAha, vzdialenos\u0165 od \u013eav\u00e9ho okraja. Po\u010fme \u010falej &#8230;\u201c). Takto vyzbrojen\u00fd inform\u00e1ciami, ktor\u00e9 s\u00fa v koment\u00e1roch postupne dek\u00f3dujete k\u00f3d. V tom druhom \u017eiadne k\u00f3dovanie nie je potrebn\u00e9. Inform\u00e1ciu o tom, \u010do je za premenn\u00fa, m\u00e1te v\u0161ade tam, kde ju pou\u017eijete. Takto m\u00f4\u017eete pristupova\u0165 ku n\u00e1zvom v\u0161etk\u00fdch objektov v programe. Dobr\u00e9 pomenovanie je d\u00f4le\u017eit\u00e9 a koment\u00e1re sa mu bohu\u017eia\u013e umo\u017e\u0148uj\u00fa vyhn\u00fa\u0165. Nemus\u00edte predsa dobre pomenov\u00e1va\u0165 k\u00f3d, ak ste ho okomentovali. Podobn\u00fd probl\u00e9m je s komplikovan\u00fdm k\u00f3dom. Algoritmus sa d\u00e1 nap\u00edsa\u0165 r\u00f4zne. Aj tak, \u017ee ho bude ma\u0165 probl\u00e9m pochopi\u0165 ktoko\u013evek in\u00fd okrem v\u00e1s. Ale zle nap\u00edsan\u00fd k\u00f3d vie prejs\u0165 cez kontrolu, ak m\u00e1 koment\u00e1r. V pr\u00edpade, \u017ee ak by som aj prijal tak\u00fdto sp\u00f4sob tvorby k\u00f3du, je s koment\u00e1rmi e\u0161te jeden probl\u00e9m.<\/p>\n<p>Koment\u00e1re predstavuj\u00fa dokument\u00e1ciu k\u00f3du. Je to s\u00edce tak\u00e1 dokument\u00e1cia distribuovan\u00e1 v k\u00f3de, ale st\u00e1le je to dokument\u00e1cia, ktor\u00e1 popisuje k\u00f3d. Ak\u00e1ko\u013evek syst\u00e9mov\u00e1 dokument\u00e1cia m\u00e1 jeden spolo\u010dn\u00fd probl\u00e9m a to je, \u017ee duplikuje popis rie\u0161enia vo\u010di k\u00f3du (duplicita popisu spo\u010d\u00edva v tom, \u017ee k\u00f3d s\u00e1m u\u017e rie\u0161enie popisuje). A duplicita nie je dobr\u00e1, preto\u017ee so sebou prin\u00e1\u0161a aktualiz\u00e1ciu. V na\u0161om pr\u00edpade to znamen\u00e1, \u017ee \u010d\u00edm viac m\u00e1te koment\u00e1rov, t\u00fdm sk\u00f4r sa roz\u00edde informa\u010dn\u00fd obsah v koment\u00e1roch s t\u00fdm, \u010do k\u00f3d rob\u00ed. Ak u\u017e ste niekedy za\u017eili schizofrenick\u00fd poh\u013ead na k\u00f3d s koment\u00e1rom, kde koment\u00e1r hovoril jedno a k\u00f3d robil zjavne nie\u010do in\u00e9, tak viete o \u010dom hovor\u00edm. Ono to st\u00e1le nakoniec vyhr\u00e1 k\u00f3d, lebo ten m\u00e1 v\u017edy pravdu ale divn\u00fd pocit, \u010di ten k\u00f3d ch\u00e1pem spr\u00e1vne a \u010di naozaj predsa len nejako nerob\u00ed to, o \u010dom hovor\u00ed koment\u00e1r tam ur\u010dite chv\u00ed\u013eu je.<\/p>\n<p>Aby to nevyzeralo, \u017ee koment\u00e1r je najv\u00e4\u010d\u0161ie zlo na svete, tak existuj\u00fa legit\u00edmne pr\u00edpady, kedy sa d\u00e1 pou\u017ei\u0165. Napr\u00edklad, ak za\u010d\u00ednate p\u00edsa\u0165 funkciu p\u00edsan\u00edm pseudok\u00f3du medzi riadky, do ktor\u00e9ho potom dopisujete norm\u00e1lny k\u00f3d. Alebo ke\u010f k\u00f3d odpoved\u00e1 na najz\u00e1kernej\u0161iu ot\u00e1zku zo v\u0161etk\u00fdch: Pre\u010do? (viac o jej z\u00e1kernosti <a href=\"http:\/\/spireng.sk\/en\/podstatna-otazka-dokumentacie\/\">inde<\/a>). Preto netvrd\u00edm, \u017ee sa pri poh\u013eade na koment\u00e1r treba automaticky pre\u017eehna\u0165 a o\u010dak\u00e1va\u0165 najhor\u0161ie. Tvrd\u00edm len, \u017ee koment\u00e1r sa m\u00f4\u017ee sta\u0165 lacnou n\u00e1hradou za dobre nap\u00edsan\u00fd k\u00f3d. A pritom to ani z\u010faleka nie je to ist\u00e9&#8230;<\/p>\n<p>V s\u00fa\u010dasnosti mi nie je zn\u00e1my \u017eiadny programovac\u00ed jazyk, ktor\u00fd by nemal funk\u010dnos\u0165 koment\u00e1rov. Iste by bolo zauj\u00edmav\u00e9 vidie\u0165 nejak\u00fd stredne ve\u013ek\u00fd projekt nap\u00edsan\u00fd v takomto jazyku. Bu\u010f by bol ten k\u00f3d dobr\u00fd, alebo by sa z program\u00e1torsk\u00e9ho oddelenia oz\u00fdvalo zna\u010dne ve\u013ea nad\u00e1vok.<\/p>","protected":false},"excerpt":{"rendered":"<p>Toto je \u010dl\u00e1nok, ktor\u00e9ho cie\u013eom je tak trochu naru\u0161i\u0165 stereotyp, ktor\u00fd vl\u00e1dne v oblasti komentovania k\u00f3du. S\u00fa\u010dasn\u00fd stav sa naj\u010dastej\u0161ie popisuje ako: \u201eProgram\u00e1tori m\u00e1lo alebo v\u00f4bec nekomentuj\u00fa k\u00f3d. Mali by ho viac komentova\u0165.\u201c Je to naozaj tak? M\u00f4\u017ee existova\u0165 koment\u00e1r, ktor\u00fd by k\u00f3du \u0161kodil?<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13],"tags":[],"class_list":["post-19","post","type-post","status-publish","format-standard","hentry","category-vyvoj-softveru"],"_links":{"self":[{"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/posts\/19","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/comments?post=19"}],"version-history":[{"count":3,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/posts\/19\/revisions"}],"predecessor-version":[{"id":330,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/posts\/19\/revisions\/330"}],"wp:attachment":[{"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/media?parent=19"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/categories?post=19"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/tags?post=19"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}