úterý 2. února 2010

Pragmatické programování

Před chvílí jsem smazal zas několik desítek řádků propracovaného kódu, kterým mě dal celkem práci napsat. Protože to není poprvé, a nejspíše ani naposled. Tak bych rád zformuloval své předsevzetí.

Pokud při programování narazím na problém,výzvu nebo úkol (nazvěte dle svého naturelu), tak prvním krokem by nemělo být přemýšlení jak ho vyřešit, ale přemýšlení zda je ho třeba řešit. Tím neříkám, že je dobré každý bug přejmenovat na feature. Ale zavazuji se promyslet zadání a zjistit, zda je řešení daného problému to co se po mě chce, zda by se problému nešlo vyhnout mírným přeformulováním zadání nebo vstupů.

Upravením vstupů lze program udělat mocnější, přehlednější pro uživatele a ušetřit si práci s psaním kódu a laděním chyb.

Pro ty co namítají, že už kecám podložím svá tvrzení dvěma příklady.

1) dal jsem si dost práce, abych vytvořil záložkové menu (oslí ucha nad stránkou) s libovolnou šířkou záložek, vytvořené pomocí CSS. Poté co jsem menu odladil, aby chodilo i v IE6 jsem zjistil, že stejná šířka záložek vypadá vizuálně mnohem lépe a je daleko jednodušší na vytvoření. V podstatě stačilo jen trochu upravit názvy záložek. Celé propracované menu šlo za měsíc při dalším redisignu pryč.

2) ve svém programu pro skládání obrázků do jednoho společného obrázku (sprite sheetu) jsem se rozhodl implementovat funkcionalitu, která zajistí, aby se stejný obrázek nevložil do společného obrázku znovu, ale namísto toho se použil už vložený obrázek.
Tato funkcionalita fungovala jen za omezených podmínek (nefungovala, pokud byly obrázky generovány rovnou do paměti).
Nyní jsem umožnil k danému obrázku nastavit kolekci vlastností, místo toho, aby se zadalo víc obrázků s podobnými vlastnostmi a teprve program hledal, které obrázky lze sjednotit do jednoho. Pro uživatele je to přehlednější (žádné skryté chování, neduplikují se vlastnosti) a kód se o dost zmenšil.