Jaká jsou úskalí Quick-and-Dirty-Programming a jak se jim vyhnout? Část 3.

Je zřejmé, že opuštění metody Quick and Dirty Programming přinese firmě výhody. Jenže je to dlouhá cesta k cíli, na které hrozí několik vážných úskalí. Tento článek pojednává o jednom z hlavních nebezpečí na této cestě.

Představme si, že firma vynaloží prostředky (včetně nějakého času) na tvorbu „čistějšího kódu“, takže vývojáři dostanou část prostoru a času na zavádění čistého kódu, ale na konci se opět odevzdá paskvil. Očekávání od vedení tedy nejsou splněna a ozve se ona známá věta: „Vidíte, já jsem vám to říkal.“ Vývojáři a programátoři tedy stejně nakonec skončí u nečistého kódu a z pohledu firmy tak dojde ke dvojnásobné ztrátě: Nejenom, že kód není čistý, ale navíc se vlastně zbytečně investoval čas a peníze do něčeho, co nenastalo. A to je jeden z hlavních důvodů, proč se vedení obává těchto investic.

Jak tomu zabránit?

Mohu z dlouholeté praxe potvrdit, že základní problém tohoto úskalí spočívá v tom, že mnozí vývojáři příliš spekulují a teoretizují nad daným kódem, a tím vznikají tyto problémy. Samozřejmě je nutné naučit se, pochopit a zažít velice dobře teoretické základy dané problematiky, protože bez nich vše stojí na vodě a bez těchto nutných základů se tvoří nečistý kód prostě z nevědomosti.

Ale jakmile se přechází do praxe a začíná se navrhovat SW, tak se již nesmí příliš teoretizovat a dlouze spekulovat, na to už čas není, to máme za sebou. V té chvíli totiž jakékoliv hluboké úvahy budou zdržovat a mohou skončit nekonečnými diskusemi nad úplně nepraktickými blbostmi.

Navíc je velmi důležité i to, nečistoty se musíme naučit vidět skutečně doslova „na první pohled“ a tam nám teoretické základy moc nepomohou.

Plyne z toho jeden závěr: Vývojáři a programátoři se musí naučit praktické tvorbě čistého kódu nikoliv pomocí složitých úvah a hlubokých analýz (tuto teorii už máme daleko za sebou), ale musíme umět odhalovat nečistoty kódu velmi rychlou metodou pomocí tzv. „asociativního myšlení“.

Jak asociativní myšlení funguje?

Mám jedno názorné a jednoduché vysvětlení přímo ze života: Vždy si při této příležitosti vzpomenu na své mládí (a že je to hodně dávno), bylo mi tak sedmnáct, osmnáct let. O letních prázdninách jsem bydlel sám na chatě, rodiče pracovali v blízkém městě. (Nebudu popisovat, co se na té chatě v nepřítomnosti rodičů odehrávalo). Čas od času jsem přijížděl do města za rodiči. Jednou mi doma ve městě máma povídá: „Dochází nám tady cibule, na chatě máme celý záhon cibule, nebudu ji přece kupovat, když máme na chatě celý záhon cibule, přivez příště cibuli.“ Asi tušíte, co se stalo příště. „Kde máš cibuli?“ „No nemám, zapomněl jsem.“ Máma trochu naštvaně: „Nebudu přece kupovat cibuli, když máme na chatě celý záhon, dovez příště cibuli.“ Nu asi tušíte, jak dopadl další rozhovor… „Kde máš cibuli?“ „Jejda, promiň, já zase zapomněl…“ „Teda ty seš. Nebudu přece kupovat cibuli, když máme na chatě celý záhon cibule…“ To už mi bylo trapný.
Řešení: Celou cestu autobusem na chatu jsem si v duchu prozpěvoval „klíče – cibule – klíče – cibule…“ Samozřejmě po příjezdu na chatu jsem na cibuli totálně zapomněl (jiné starosti, dovézt bečku piva apod.). Ale podmíněný reflex zapracoval stoprocentně: Když jsem se chystal k odjezdu zpátky do města, tak jsem si v duchu řekl: „Kde mám klíče …. cibule – klíče – cibule…“ a šel jsem a rychle vytrhal ze záhonu pár cibulí a dovezl ji mámě domů.
Poznámka: Tato metoda asociativního myšlení pomocí pěstování podmíněného Pavlova reflexu má jednu záludnost: Je velice silná, takže u mne, i po desítkách let, když se řekne „klíče“, vybaví se mi „cibule“.

Úplně stejně to musí fungovat u čistoty kódu. Prostě něco uvidíte a něco se vám okamžitě asociativně vyjeví. Na tuto ryze praktickou část se velice silně zaměřují i naše školení. Kromě nutného a důkladného vysvětlení teorie (pro správné pochopení) si navíc účastníci doslova „vtloukají do hlavy“ zkratky vedoucí k rychlé identifikaci nečistého kódu.

Existují dvě základní oblasti těchto „reflexů“ asociativního myšlení u čistoty kódu:

1. První oblast: Totálně paskvilně nečistý kód vzniklý hrubými nečistotami ve vrstvách kódu („paskvil na ntou“). Zde platí také jednoduchá „zkratka v myšlení“, o které si povíme příště, a totiž posouzení umístění daného kousku kódu v primitivní podobě: „opravdu patříš sem, nebo vlevo, nebo napravo?“. Je to rychlá metoda využívající intuitivního pohledu ve smyslu „safra, toto sem přece nepatří!“. Při vypěstování tohoto reflexu se nám musí nečistě umístěný kód projevit stejně křiklavě jako pohled na velkou černou skrvnu na bílých šatech. Je to super-rychlé a nic víc není třeba…

2. Druhá oblast: Rychlá identifikace Design Patterns GOF v kódu. Není až tak problém si Design Patterns GOF prostudovat. O mnoho obtížnější je rychle identifikovat existenci vzoru, který se nabízí použít, ale který se mnohdy při návrhu kódu prostě mine. Platí jednoduchá poučka, že „nejnebezpečnější křižovatkou je ta, kterou projedete, aniž byste si všimli, že to byla křižovatka“. (To platí nejen v dopravě, ale i v životě). Podobně je tomu i v Design Patterns – mineme určitou část kódu, kde by se hodilo vzor nasadit (a to velmi účelně), ale prostě si toho nevšimneme. Tomu se sice obecně nevyhneme, ale tuto chybu je třeba minimalizovat. Proto účastníky školení učím také zkratkám (podobně jako „klíče – cibule“), které když při návrhu kódu zazní, tak se jim tento vzor okamžitě vybaví a pokud třeba, nasadí jej.

Na závěr hádanka pro vás:

Jestlipak byste dovedli určit, jaké vzory by se vám měly vybavit, když při návrhu kódu zaznějí někde nějak (i v duchu) tato slova :

1. „strom, stromová struktura“ = ??? DP z GOF
2. „výměna akce, spuštění akce,obecně řeč o akci“ = ??? DP z GOF
3. „musí zareagovat, reakce, čeká se na to až nastane, když se dokončí, mělo by se spustit“ = ??? DP z GOF
4. „a ještě je třeba udělat, a ještě, a ještě“ = ??? DP z GOF
5. „všichni to musí umět, ale někteří z nás to za zády hážou někomu dalšímu“ = ??? DP z GOF
6. „potřebuji poskládat algoritmy efektivně podobně jako u strukturovaného programování, aneb jak si napsat Karla nebo
Baltíka (bez grafiky) velice rychle“ = ??? DP z GOF

Znáte tyto asociace? Zkuste odpovědět mailem anebo do komentu.

Pokračování následuje


od

Značky:

Komentáře

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *