Neoddeliteľnou súčasťou každodennej práce programátora je čítanie kódu iného programátora. Na projektoch pracujú tímy, úlohy zasahujú do rôznych vrstiev a modulov systému, takže sa jeden človek musí zorientovať v “cudzom” kóde.
Pracujem v doméne kde musí byť všetko tip-top. Na všetko sú procesy, všetko musí byť validované, certifikované, overené atď. A samozrejme aj kód. Kolega, ktorý odišiel po niekoľkých rokoch do inej firmy, povedal „Teraz ako keby som zadanie do školy robil“. A samozrejme aj kód. Používame veľa konvencií pri jeho písaní. Je to podľa vás dobré?
Podľa mňa je to viac než dobré. Čítať kód pekne odsadený, naformátovaný, okomentovaný, že by sa v ňom vyznala aj vaša babička. Konvencie pomenovania premenných, argumentov, konštánt atď. veľmi zvyšujú čitateľnosť, a prispevajú tak k rýchlejšiemu pochopeniu.
Je pravda, že ak idem programovať niečo, s čím nemám veľké skúsenosti, a skúšam rôzne riešenia, tak najprv na nejakú tú úpravu z vysoka kašlem a pomenúvam premenné a,b,c či d. Ale nakoniec, keď dospejem k finálnemu riešeniu, vždy všetko upravím, nech to vyzerá ako má. Ale veľa ľudí píše ako príde. Jednoducho to len naklepú, a keď to funguje, tak ideme ďalej.
Zabíjal by som za to. Toľkí egoizmus, a ešte pri tímovej práci. Samozrejme, tiež som to tak niekedy robil, keď som začínal, ale vždy som sa snažil mať v kóde aký taký poriadok. Pokročilejší programátor by si už nemal dovoliť písať taký bordel. Každému by som dal ako povinné čítanie knihu od Steva McConnell-a: Dokonalý kód. Pokojne z toho mohli spraviť predmet v nižších ročníkoch vysokej školy.
A neodpustím si jeden príklad:
bool result = nejakyObjekt.JeInicializovany();
if (result == true)
{
return true;
}
else
{
return false;
}
Áno, takéto niečo som videl napísané na vlastné oči. Áno, aj mne sa už stalo, že som niekedy niečo podobné napísal. Áno, dá sa to jednoduchšie:
return nejakyObjekt.JeInicializovany();
A toto je len jeden z mnoha príkladov, tých akceptovateľnejších. Formátovanie dátumu cez orezávanie reťazca namiesto použitia formattera. Neviem, či je to lenivosť naučiť sa používať formátovanie, alebo nejaká myšlienka, že čím viac kódu, tým lepšie.
Ešte mi napadá, že si takto možno ľudia zabezpečujú prácu do budúcna – refaktoring. Respektíve ich metodológia vývoja je taká, že po nich nikto kód nekontroluje, až kým netreba riešiť chybu alebo upravovať kód. No veď stačí si pozrieť jednu stránku, kde sa takéto kúsky zhromažďujú, a človek nevie či sa má smiať alebo plakať.
Nemám skúsenosti s vývojom open-source softvéru, kde kód píše oveľa viac ľudí, ktorí sa ani nepoznajú. Takže by som bol rád ak by sa ľudia z tejto oblasti mohli vyjadriť, ako vyzerá kód, či sa niečo dodržuje, alebo to vyzerá ako seno.
Niekde som čítal (možno to bolo aj vo vyššie spomenutej knihe) peknú vetu:
“Píšte kód najprv pre ľudí, potom pre počítače”.
Predstavte si, že vás kód bude čítať niekto iný? Porozumie mu? Nebudete sa za neho hanbiť?