Blog | Code Retreat a No Return Kata

Code Retreat a No Return Kata

Jak jsem už dřív psal, rád bych uspořádal Code Retreat (primárně zaměřený na PHP). Jestli ještě neznáte Code Retreat, princip je jednoduchý. Lidé se sejdou v jedné místnosti, rozdělí se na dvojice, zvolí si programovací jazyk. Všichni dostanou stejný úkol a pomocí TDD na něm začnou pracovat. Specialitou je, že každou hodinu se vše, co se naprogramovalo, smaže a začne se od nuly. Pokaždé tedy hledá dvojice novou cestu, jak problém uchopit a netrápí se představou, že by snad mohla úkol dokončit (je naschvál tak velký, aby se nedal stihnout za hodinu).

Už mám i vymyšlené zadání.

Je to takzvaná No Return Kata. Tedy napsat zadanou aplikaci bez použití klíčového slova return.

Zadaná aplikace je šablonovací engine. Ať už si lidi vyberou obdobu Latte z Nette, nebo třeba Jade, nebo úplně novou variantu, je šablonovací engine vždy na víc, než hodinu práce. A dá se začít psát více způsobů.

Do toho neexistence klíčového slova return způsobí, že jste nuceni pracovat se zdrojáky úplně jinak.

Takže místo běžné práce s objekty:

$calc = new Calc;
$a = $calc->add($x, 2);
$b = $calc->sub($a, 1);
$result = $calc->pow($b, 2)
// prace s vypoctem v $result…

Což je velmi běžný kus zdrojáku, který se v obměnách vyskytuje snad všude.

Místo toho se zdroják změní podle běžné rady Tell, Don't Ask. Tedy místo toho, abych se ptal, rozkazuju.

Zdroják pak vypadá jinak.

class Calc
{

        function vypocti($x, $onResult) {
                $this->vypoctiStepAdd($x, 2, $onResult);
        }

        function vypoctiStepAdd($x, $y, $onResult) {
                $this->vypoctiStepSub($x + $y, 1, $onResult);
        }

        function vypoctiStepSub($x, $y, $onResult) {
                $this->vypoctiStepPow($x - $y, $onResult);
        }

        function vypoctiStepPow($x, $y, $onResult) {
                $onResult(pow($x, $y));
        }
}

$calc = new Calc;
$calc->vypocti(2, function($result) {
        // nejaky kod s $result...
});

Teď je na místě otázka. Je takový zdroják opravdu lepší? Odpověď zní: ne vždy je lepší říkat a ne jen ptát se. Ale donutí vás to hodně přemýšlet, jak přepsat svůj kus kódu.

A v případě šablonovací vrstvy budou některé věci enormně zajímavé (např. jak implementovat helpery). Chcete se zúčastnit? Brání vám naopak v účasti něco (neznáte testování, nechcete používat PHP a radši byste psal v jiném jazyce, nebo něco jiného)? Napište komentář.

Programování

Předejte zkušenosti i dalším a sdílejte tento článek!



Jiří Knesl
Business & IT konzultant

Jiří Knesl poprvé začal programovat v roce 1993. Od té doby, díky skvělým učitelům a později zákazníkům, měl možnost neustále růst v oboru vývoje webových aplikací a informačních systémů. v roce 2002 se přidal zájem o ekonomii a v roce 2006 o organizaci práce. Vším tím se konstantně profesně zabývá jak ve svém podnikání, tak i u zákazníků. Za posledních 5 let vydal na tato témata přes 400 článků.

Prohlédněte si moje reference

Mám zkušenosti z rozsáhlých projektů pro korporace, velké podniky, střední i malé firmy, ale i pro startupy v cloudu. Zvyšoval jsem jejich know-how, pomáhal nastavovat jejich organizační strukturu, byl lektorem a mentorem v náročných situacích. Podívejte se, jak vidí můj přínos samotní klienti.

Sledujte mé postřehy na sociálních sítích