Pred tým, než začnete písať kód

Samozrejme, nadpis vedie do veľmi širokej témy, kde by sa dalo písať o plánovaní, rozdelení úloh a podobne, ale chcem sa venovať iba písaniu kódu samotného. Teda sme v pozícií, keď vieme, čo chceme urobiť, vieme zhruba ako to chceme urobiť, prípadne máme to nakreslené a už nám chýba ten posledný krok – naprogramovať to.

Keď som minule rozmýšľal o kóde, uvedomil som si 3 pravidlá, ktorým by mal podliehať dobre napísaný kód: funkčnosť, elegancia, estetika.

Funkčnosť

Funkčnosť je najdôležitejším pravidlom pri písaní kódu. Bez tohto sú ostatné dve úplne zbytočné. Hovorí o tom, že kód, ktorý naprogramujete má fungovať, a fungovať tak ako chcete. Ideálne je, keď máte predstavu o jednotlivých krokoch ešte pred tým, než začnete programovať. K tomuto boli vlastne vedený programátori ‘od pradávna’, keď boli nútený napísať akého typu bude premenná, aké veľké bude pole a pod. Ak je vaša odpoveď na otázku: Funguje môj kód podľa mojich predstáv? áno, tak môžete pokračovať ďalším pravidlom.

Elegancia

Toto pravidlo by sme mohli kľudne pomenovať aj efektívnosť. Elegantný kód, je v podstate kód, ktorý rieši problém najjednoduchším a najefektívnejším riešením, pričom sa myslí hlavne na budúcnosť. Pre elegantný kód by ste sa mali držať istých postupov, resp. pravidiel:

  • DRY aka Don’t repeat yourself – V skripte by ste nemali mať kód, ktorý sa opakuje, typickým príkladom je script:
    if (is_user_admin())
    {
         $x = TRUE;
         // 100 riadkov kódu zaoberajúcich sa premennou $x
    }
    else
    {
         $x = FALSE;
         // 100 rovnakých riadkov kódu
    }

    Prečo takýto kód vzniká? Lenivosť programátora. Je mu jednoduchšie skopírovať kód, než naprogramovať to inak.

    Prečo to nie je elegantné? Pretože za dva týždne sa príde nato, že v kóde je chyba a programátor môže zabudnúť na druhú vetvu podmienky.

    Ako sa tomu vyhnúť? Ak vidíte, že sa vám blok kódu začína opakovať, vytvorte funkciu, prípadne zvoľte iné podmienky.

  • Nepíšte ‘železný kód’ – Železný kód je kód, ktorý je napísaný ‘natvrdo’, teda surové riešenie problému. Kde je možné (a má zmysel) snažte sa použiť cykly, funkcie, triedy … Pre pochopenie uvádzam príklad z jazyka C:
    pinMode(1, HIGH);
    pinMode(2, HIGH);
    pinMode(3, HIGH);
    pinMode(4, HIGH);
    pinMode(5, HIGH);
    pinMode(6, HIGH);
    pinMode(7, HIGH);
    pinMode(8, HIGH);
    pinMode(9, HIGH);
    
    // sa dá napísať ako
    for (i = 1; i<10; i++)
    {
    	pinMode(i, HIGH);
    }
  • Porozmýšľajte, či sa dá problém vyriešiť inak, či sa dá kód napísať inak. Pokiaľ áno, rozhodnite sa, ktoré riešenie je lepšie ale majte na mysli hlavne, že raz to možno budete musieť prepísať.

Pokiaľ Váš kód je výsledkom otázky Je toto najlepšie riešenie môjho problému? môžete pokojne prejsť na posledný bod tohto článku.

Estetika

Máte kód, ktorý funguje, ktorý je efektívny ale neviete sa v ňom rýchlo zorientovať vaším problémom bude spomínaná estetika, teda ako kód vyzerá. Možno si myslíte, že estetika je záležitosť designerov, zatiaľ čo vy ste programátor a máte právo na neestetický kód. Ste na omyle. Pokiaľ sa v kóde neviete zorientovať vy alebo vaši spolupracovníci, tak je váš kód zlý, bez ohľadu nato, že je funkčný a elegantný. Aby ste mali pekný kód držte sa týchto pravidiel:

  • Nebojte sa používať ENTER. Oddeľujete ním ako riadky, tak aj bloky textu. Jeho používanie nepreháňajte, ale verte mi, že tých pár bitov prehľadnosti veľmi pomôže.
  • Používajte odsadenie. Odsadzujte uprostred cyklov a podmienok, vytvoríte tak strom kódu.
  • Komentujte svoj kód. Príliš veľa komentárov prehľadnosti určite nepomôže, ale pár správne situovaných jej neskutočne pomôže.  Komentujte predovššetkým funkcie a metódy, napíšte si vstupy, výstupy a účel.
  • Používajte nejaké pravidlá pre písanie syntaxe, napr. http://codeigniter.com/user_guide/general/styleguide.html.

Záver

V dnešnom článku som predstavil tri pravidlá, ktoré by som si najradšej patentoval pod skratkou FEE :D Pokiaľ ich bude váš kód spĺňať, budete programovať rýchlejšie, vyhnete sa hromade chýb a nebude pre vás problém sa k nemu po dlhšej dobe vrátiť. Prajem pekný deň!

Pridaj komentár

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>