<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Lukáš Hajdu</title>
    <link>https://lukashajdu.sk/tags/koment%C3%A1re/index.xml</link>
    <description>Recent content on Lukáš Hajdu</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>sk</language>
    <atom:link href="https://lukashajdu.sk/tags/koment%C3%A1re/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>TODO or not TODO - to je otázka</title>
      <link>https://lukashajdu.sk/post/todo-or-not-todo-to-je-otazka/</link>
      <pubDate>Mon, 15 May 2017 11:22:00 +0000</pubDate>
      
      <guid>https://lukashajdu.sk/post/todo-or-not-todo-to-je-otazka/</guid>
      <description>&lt;p&gt;Máloktoré z kľúčových slov v komentároch má tak voľnú interpretáciu ako TODO.
Je použitie TODO komentárov dobré, alebo zlé? Prináša nám v kóde pridanú hodnotu,
alebo nie? Na tieto a iné otázky sa budem snažiť nájsť odpoveď v tomto článku.
&lt;/p&gt;

&lt;p&gt;Mnohí z nás sa už v praxi určite stretli s jedným z nasledujúcich kľúčových slov
v komentároch kódu: TODO, FIXME, XXX, OTHER, HACK a podobne. Všetky
tieto slová patria do &amp;ldquo;TODO rodiny&amp;rdquo;. V mojej osobnej praxi som sa s inými, ako
TODO a FIXME nestretol, a keďže som sa nechal pre tento článok inšpirovať
výskumom &lt;a href=&#34;https://lukashajdu.sk/post/todo-or-not-todo-to-je-otazka/#r1&#34;&gt;[1]&lt;/a&gt;, kde sú
iné slová v značnej minorite, nebudem sa inými ani zaoberať.&lt;/p&gt;

&lt;p&gt;Ak sa lepšie zamyslíme, potom zistíme, že TODO v skutočnosti naznačuje bod,
v ktorom bolo urobené rozhodnutie - rozhodnutie odložiť konanie, v skutočnosti
rozhodnutie neurobiť niečo. Toto rozhodnutie je nepochybne menej ako ideálne &lt;a href=&#34;https://lukashajdu.sk/post/todo-or-not-todo-to-je-otazka/#r2&#34;&gt;[2]&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Myslím, že pri vhodnom použití nám však TODO môže priniesť osoh, ale tak ako pri
použití hocijakých iných komentároch sa môže použitie stať neaktuálne, zabudnuté,
alebo ignorované. Je preto dôležité sa zamyslieť na tom, kedy TODO použiť, a kedy
použiť niečo vhodnejšie.&lt;/p&gt;

&lt;p&gt;Kľúčové slovo FIXME sa v komentároch často považuje za zameniteľné s TODO.
Názov ale s väčším dôrazom naznačuje, že niečo nie je v poriadku. Ak je teda
TODO považované za žiadosť o zmenu, potom je FIXME považované za hlásenie chyby.&lt;/p&gt;

&lt;h2 id=&#34;príklady-použitia&#34;&gt;Príklady použitia&lt;/h2&gt;

&lt;p&gt;Toto sú niektoré príklady použitia podľa &lt;a href=&#34;https://lukashajdu.sk/post/todo-or-not-todo-to-je-otazka/#r1&#34;&gt;[1]&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Podúlohy&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Vyznačenie podúloh pri vykonávaní väčšej úlohy, v prípade vyššej priority.
Pri vývoji takto osobne často označujem podúlohy, ku ktorým sa čoskoro v rámci
môjho zadania, vo svojej pracovnej vetve, vrátim. Tieto komentáre však vytváram
len pre osobné využitie a do produkčnej vetvy sa nikdy nedostanú.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Krátkodobé úlohy&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Vyznačenie podúloh, pre vykonanie vo veľmi krátkej dobe.
Osobne používam TODO v tomto prípade asi najčastejšie. Často pri ukladaní zmien
vo verziovaciom systéme na konci dňa, keď viem, že sa k úlohe opäť dostanem
na ďalší deň. Do hlavnej vetvy sa z mojej pracovnej vetvy takéto komentáre
však nedostanú.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Indikátor problémov&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Komunikácia k iným členom tímu a vyznačenie,
že programátor si je vedomý chyby. V mojom prípade takto označujem chyby, ktoré
nie sú jednoznačné na odstránenie (skryté závislosti, absencia testov),
ale nespôsobujú v kóde škodu. Prípadne nie sú až tak dôležité na odstránenie.
Inak chyby priamo odstraňujem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hraničné prípady&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Vyznačenie hraničných prípadov, ktoré sú zdĺhavé na implementáciu, prípadne
nie sú momentálne dôležité.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Odkladanie úloh s nízkou prioritou&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Kód, ktorý by bolo vhodné zmeniť, ale momentálne to nie je dôležité. Myslím,
že toto je druh komentárov, ktorý je časom zabudnutý a tým pádom zbytočný,
pretože takéto zmeny nebudú pravdepodobne nikdy implementované.&lt;/p&gt;

&lt;p&gt;Ďalšie zaujímave príklady použitia:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mikro-manažment&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Iný zaujímavý príklad použitia je udaný v článku
&lt;a href=&#34;https://lukashajdu.sk/post/todo-or-not-todo-to-je-otazka/#r4&#34;&gt;[4]&lt;/a&gt; od JetBrains, ktorý
popisuje spôsob manažmentu projektu pomocou TODO komentárov. Pre každého člena
týmu je v tomto prípade vytvorený TODO komentár so špecifickým značením &lt;code&gt;(\btodo-NAME\b.*)&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;// @todo-LUKAS
// @todo-JOZO
// @todo-MATEJ
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;S využitím vbudovanej funkcionality v PhpStorm-e, za pomoci filtrov, je takto možné
pre každého člena vytvoriť zoznam úloh. Myslím, že takýto prístup sa môže zísť
pri riadení malých projektov v počiatočnom štádiu, ak sa nekladie až taký veľký
dôraz na sledovanie pokrokov v tiketovacom systéme a pod. Inak je tento prístup
napríklad pri manažovaní budúci úloh značne nepraktický.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Označenie aktuálne nepotrebných úloh/funkcionality&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;V zdrojovom kóde Zend Framework-u &lt;a href=&#34;https://lukashajdu.sk/post/todo-or-not-todo-to-je-otazka/#r6&#34;&gt;[6]&lt;/a&gt;
možno vidieť komentáre podobné tomuto:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;/**
 * HTTP Authentication Adapter
 *
 * Implements a pretty good chunk of RFC 2617.
 *
 * @todo       Support auth-int
 * @todo       Track nonces, nonce-count, opaque for replay protection and stale support
 * @todo       Support Authentication-Info header
 */
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Jedná sa o implementáciu RFC 2617, kde v tomto prípade nebolo pre použitie
dôležité implementovať niektoré z funkcionalít definovaných v RFC. Autori
však týmto komentárom poznamenali, že sú si vedomí neimplementovanej
funkcionality, čo môže napríklad upovedomiť vývojárov využívajúcich knižnicu
o chýbajúcej funkcionalite.&lt;/p&gt;

&lt;p&gt;V čase písania kódu len prosím nepíšte komentáre typu:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;// TODO improve this part
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Aký zmyseľ má písať takýto kód, keď už v čase písania si je autor vedomý,
že kód je zlý a dokonca pridá takúto poznámku?&lt;/p&gt;

&lt;h2 id=&#34;formátovanie-todo-komentárov&#34;&gt;Formátovanie TODO komentárov&lt;/h2&gt;

&lt;p&gt;Vo všetkých prípadoch použitia TODO je dôležité použiť vhodné metadáta ako
deskriptívny popis, prípadne iniciály autora, dátum, alebo číslo chyby v systéme
pre evidenciu chýb. V článku &lt;a href=&#34;https://lukashajdu.sk/post/todo-or-not-todo-to-je-otazka/#r3&#34;&gt;[3]&lt;/a&gt;
autor navrhuje nasledujúci formát TODO komentára, ktorý je vhodný pre spracovanie
nástrojmi pre manipuláciu s textom v termináli:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;// TODO:2008-12-06:johnc:Add support for negative offsets.
// While it is unlikely that we get a negative offset, it can
// occur if the garbage collector runs out of space.
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Pre automatickú extrakciu informácií z takýchto komentárov je však dôležité, aby
bol uchovaný štandardizovaný formát komentára.&lt;/p&gt;

&lt;p&gt;V praxi som sa však najviac stretávam s formátom:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;// TODO: Deskriptívny popis
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Prípadne s phpDocumentor formátom &lt;a href=&#34;https://lukashajdu.sk/post/todo-or-not-todo-to-je-otazka/#r5&#34;&gt;[5]&lt;/a&gt;,
ktorý je v PHP preferovaný:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;/**
 * @todo deskriptívny popis
 */
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;PhpDocumentor však nepodporuje iné slová z &amp;ldquo;TODO rodiny&amp;rdquo; ako &lt;code&gt;@todo&lt;/code&gt;.&lt;/p&gt;

&lt;h2 id=&#34;použiť-todo-alebo-vytvoriť-tiket&#34;&gt;Použiť TODO, alebo vytvoriť tiket?&lt;/h2&gt;

&lt;p&gt;Mnoho projektov používa pre evidenciu chýb na to určený softvér (napr. JIRA, Bugzilla,
Github a pod.). Nastáva teda otázka, či nieje vhodnejšie a prehľadnejšie uchovávať
chyby takto.&lt;/p&gt;

&lt;p&gt;Prečo má vlastne zmysel sa zamýšľať nad TODO komentármi?
V &lt;a href=&#34;https://lukashajdu.sk/post/todo-or-not-todo-to-je-otazka/#r7&#34;&gt;[7]&lt;/a&gt; autori uvádzajú, že
približne 50% pracovného času trávia vývojári v IDE
(Integrated Development Environment - vývojové prostredie). Síce sa jedná o článok
staršieho vydania a s ohľadom na Eclipse IDE, možno však usúdiť, že minimalizácia
použitie iných nástrojov a využitie samotného IDE môže zefektívniť prácu. Napríklad
Eclipse a PhpStorm majú priamo vbudovanú funkcionalitu pre zobrazenie TODO v zozname.&lt;/p&gt;

&lt;p&gt;V analýze &lt;a href=&#34;https://lukashajdu.sk/post/todo-or-not-todo-to-je-otazka/#r1&#34;&gt;[1]&lt;/a&gt;
dospeli k nasledujúcim záverom:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;použitie TODO komentárov sa ustáluje so zrelosťou projektu&lt;/li&gt;
&lt;li&gt;v stabilných a produkčných projektoch sa kvôli väčšej prehľadnosti chyby evidujú&lt;/li&gt;
&lt;li&gt;pri malých chybách je často vytvorený TODO komentár, pri väčších tiket&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Zo záverov možno teda usúdiť, že ideálnym kandidátom pre používanie TODO sú projekty
v počiatočnom štádiu vývoja, ktoré ešte neboli úplne použité v produkčnom prostredí.&lt;/p&gt;

&lt;h2 id=&#34;nevýhody-spojené-s-používaním&#34;&gt;Nevýhody spojené s používaním&lt;/h2&gt;

&lt;p&gt;TODO komentáre často dostanú nálepku autora. Tým pádom ostatní programátori
predpokladajú, že chyby budú odstránené autorom a takéto komentáre väčšinou ignorujú.&lt;/p&gt;

&lt;p&gt;Komentáre tohto druhu sú často prehliadané a ľahko sa v zdrojovom kóde stratia.
Je preto pri ich používaní potrebné zaviesť proces v ktorom budú komentáre opäť
preskúmané, aktualizované, prípadne odstránené. Inak komentáre strácajú na význame.&lt;/p&gt;

&lt;h2 id=&#34;zhodnotenie&#34;&gt;Zhodnotenie&lt;/h2&gt;

&lt;p&gt;Je teda použitie TODO komentárov dobré a prináša nám pridanú hodnotu? Určite,
ale iba v niektorých prípadoch. Kedy ho teda použiť? V počiatkoch projektu,
prípadne ako osobnú poznámku v pracovnej vetve pri práci na zadaní.
TODO komentáre by som inak použil už len pre označenie potencionálne chýbajúcej
funkcionality, ktorá v danom čase nie je potrebná, podobne ako je to vidieť
v zdrojovom kóde Zend Framework-u. V iných prípadoch by som na evidenciu použil
tiketovací systém.&lt;/p&gt;

&lt;h2 id=&#34;referencie&#34;&gt;Referencie&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;b id=&#34;r1&#34;&gt;[1]&lt;/b&gt; &lt;em&gt;TODO or To Bug: Exploring How Task Annotations Play a Role
in the Work Practices of Software Developers&lt;/em&gt;, &lt;strong&gt;Margaret-Anne Storey, a iní&lt;/strong&gt;.
Proceeding. ICSE &amp;lsquo;08 Proceedings of the 30th international conference
on Software engineering. s. 251-260. ISBN: 978-1-60558-079-1.&lt;/li&gt;
&lt;li&gt;&lt;b id=&#34;r2&#34;&gt;[2]&lt;/b&gt; Word Aligned. The case against TODO [online] [cit 2017-05-11].
Dostupné na internete &amp;lt;&lt;a href=&#34;http://wordaligned.org/articles/todo&amp;gt;&#34;&gt;http://wordaligned.org/articles/todo&amp;gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;b id=&#34;r3&#34;&gt;[3]&lt;/b&gt; Approxion. TODO or not TODO [online]. [cit 2017-05-10].
Dostupné na internete &amp;lt;&lt;a href=&#34;https://www.approxion.com/?p=39&amp;gt;&#34;&gt;https://www.approxion.com/?p=39&amp;gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;b id=&#34;r4&#34;&gt;[4]&lt;/b&gt; WebStorm &amp;amp; PhpStorm Blog. Managing TODO comments in your code
[online]. [cit 2017-05-10]. Dostupné na internete
&amp;lt; &lt;a href=&#34;https://blog.jetbrains.com/webide/2012/10/managing-todo/&#34;&gt;https://blog.jetbrains.com/webide/2012/10/managing-todo/&lt;/a&gt; &amp;gt;&lt;/li&gt;
&lt;li&gt;&lt;b id=&#34;r5&#34;&gt;[5]&lt;/b&gt; phpDocumentor. @todo [online]. [cit 2017-05-10]. Dostupné
na internete &amp;lt; &lt;a href=&#34;https://phpdoc.org/docs/latest/references/phpdoc/tags/todo.html&#34;&gt;https://phpdoc.org/docs/latest/references/phpdoc/tags/todo.html&lt;/a&gt; &amp;gt;&lt;/li&gt;
&lt;li&gt;&lt;b id=&#34;r6&#34;&gt;[6]&lt;/b&gt; Zdrojový kód komponentu &lt;code&gt;Zend\Authentication&lt;/code&gt;. Http.php [online]. [cit 2017-05-12]. Dostupné
na internete &amp;lt; &lt;a href=&#34;https://github.com/zendframework/zend-authentication/blob/master/src/Adapter/Http.php&#34;&gt;https://github.com/zendframework/zend-authentication/blob/master/src/Adapter/Http.php&lt;/a&gt; &amp;gt;&lt;/li&gt;
&lt;li&gt;&lt;b id=&#34;r7&#34;&gt;[7]&lt;/b&gt; &lt;em&gt;How Are Java Software Developers Using the Eclipse IDE?&lt;/em&gt;,
&lt;strong&gt;G.C. Murphy, M. Kersten, L. Findlater.&lt;/strong&gt;. IEEE Software, 23(4), s. 76-83, 2006.
ISSN: 0740-7459.&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
  </channel>
</rss>