[Kniha] Refactoring Databases - Evolutionary database design

~ ~

Scott W. Ambler, Pramod J. Sadalage

Vychází v podpisové edici Martina Fowlera který tím jaksi ručí za kvalitu série. Bohužel konkrétně tato kniha je nezajímavá až nudná. Sice může fungovat jako referenční příručka možných databázových refaktorizací ale ani v této oblasti nepřináší nic nového. Je prostě pouhým seznamem.

Pokud máte s databázemi a jejich správou alespoň nějaké zkušenosti je pro vás tato kniha ztrátou času. 

Zelená je louka, testování to je hra

~ ~
Vždycky když přijde nový programátor a nevyzná se v systému a vidí nepořádek v kódu aplikace napsané hurá stylem bez použití moderních metodik jako je například jednotkové testování tak by rád přesvědčil kolegy o nezbytnosti přepsání systémů. Je svěží, má spousty nápadů a zná požadavky na novou verzi systému a věří, že nový začátek na zelené louce je cesta k úspěchu.

Bohužel tohle nikdy nefunguje. Požadavky na software jsou věc která se mění doslova každou minutu. A proto náš čerstvý programátor stojí, aniž by to tušil, na okraji propasti. Nějaký čas stráví návrhem aplikace, datového modelu, grafického rozhraní a dalších subsystémů. Ve chvíli kdy začne programovat už je návrh zastaralý. Každou chvíli dorazí někdo z kolegů s nápadem na další skvělou vlastnost. Jenže náš programátor už má "navrženo" a přidání vlastnosti se kterou původně nepočítal odsouvá do dalších verzí. Až se ta první vypiluje.

A v tuhle chvíli už nová zelená aplikace nevyhovuje aktuální požadavkům a začne vznikat tlak na slavné uvedení první verze. Nastaví se termín. Tlak se zvyšuje a aby se to stihlo některé věci se neudělají ideálně (to ostatně ani nejde) a zelená louka se začíná špinit.

Autor nového systémů ale pořád ještě trpí zbytkovým nadšením a tvrdí, že systém je modulární a chybějící vlastnosti není problém jednoduše dopsat. Ano, ale kdo a kdy to udělá? Když se všichni potýkají s novými chybami nového systému a učí se ho používat. Chyby se navíc opravují v rychlosti a zelená louka začíná vypadat jako po nájezdu nevychovaných turistů. A z obchodního oddělení chodí jízlivé dotazy na téma proč ta nová skvělá verze neumí ani polovinu toho co uměla ta stará "špatná" verze.

A do toho nastoupí nový programátor. A ten má skvělý nápad, protože naprosto přesně zná požadavky na danou aplikaci.

Netvrdím, že psát software znovu nemá smysl, někdy totiž není vyhnutí. Zvláště u aplikací napsaných v roce 2001 v PHP 3.x, později naportovaných do PHP 4.x tím, že se z přípon souborů odstranila trojka. A když čtvrtá řada přestala být podporovaná tak uzavřením tisicířádkových skriptů do jediné metody jediné třídy aby to bylo jakože to emvécé.

V zásadě existují dvě cesty jak se s tím vypořádat. Skutečně začít na zelené louce, využít programování řízené testy a další metodiky na udržení kvality kódu. Nebo využít stávající systém napsat pro něj testy. Výhody jsou jasně na straně prvního pokud máte nekonečně času a peněz. Výhody druhého jsou ty, že v jakýkoliv okamžik vývoje máte minimálně stejně špatně fungující systém který umí všichni používat a dobře ho znají všechny jeho nevýhody.