Programátorské cvičení VII.


Vypsaná školení


A dnes je tu poslední programátorské cvičení. Dnes se naučíte nejjednodušší způsob testování bez toho, abyste museli psát testy. Tento přístup má své klady i zápory, ale když už se rozhodnu nepsat testy (ano, existují i situace, kdy se vyplatí otestovat kód jinak), je tento způsob vhodným doplňkem.

Jaké je dnešní cvičení?

Naučte se používat funkci assert.

Tato funkce testuje, zda se podmínka vyhodnotí jako false a pokud k tomu dojde, dojde k chybě. Je možné ale chování assertu přepsat svým handlerem, který například jen tiše zaloguje chybu nebo udělá cokoliv podobného.

Její syntaxe je:

assert('vyraz, ktery musi byt vyhodnocen true')

// napr.

class FileStorage
{
        private $securizer;

        function __construct($securizer)
        {
                // type hinting pro chude
                assert('method_exists($securizer, "sanitizeAgainstDirectoryTraversal")');
                $this->securizer = $securizer;
        }

        function save($key, $value)
        {
                assert('is_string($key)'); // staticke typovani pro chude
                file_put_contents(__DIR__ . '/' .
                        $this->security->sanitizeAgainstDirectoryTraversal($key), serialize($value);
        }

        function load($key)
        {
                assert('is_string($key);');
                $path = __DIR__ . '/' . $this->security->
                        sanitizeAgainstDirectoryTraversal($key);
                if (file_exists($path)) {
                        return unserialize(file_get_contents($path));
                }
        }
}

Naučte se používat assert tam, kde většinou používáte var_dump, print_r apod. Jeho použití je zejména při vývoji bez testů na začátku a konci metod, kdy na začátku testujete parametry, které dostáváte a na konci testujete návratovou hodnotu a to, že objekt změnil svůj vnitřní stav - samozřejmě pokud k tomu mělo dojít.

Až svůj kód napíšete, nemusíte asserty v metodách nechávat. Pokud je odstraníte, bude kód čitelnější. To je samozřejmě znatelná nevýhoda testů v kódu (mimo jazyků, kde obdobný přístup: Design By Contract, je přímo součástí jazyka). Jakmile máte upravit kód, přidejte (nebo upravte) asserty tak, aby nejdřív reflektovaly nové chování. Nechte testy nejdřív selhat. Pak teprve naprogramujte řešení. Je to tak lepší z několika důvodů. Za stěžejní považuji ten, že tak ověříte, zda jsou vaše testy skutečně účinné.

Jestli vás cvičení bavila, přihlašte se na školení Power PHP, kde dostanete šanci poznat v komletním rámci tato a další cvičení a pak si je v systému Žít IT sami vyzkoušíte.

Kategorie

Agile
Cestování
Life Hacking
Minimalismus
Podnikání & Startupy
Použitelnost
Programování

Copyright © 2010 Jiří Knesl; 777 002 104 jiri.knesl@gmail.com RSS
Followujte mě na twitteru