TDD jako podvojné účetnictví
Narazil jsem na pět let starý blog post Uncle Bob: TDD As Double-Entry Bookkeeping, kde je přepis části videozáznamu diskuze ohledně TDD. Konkrétně citát Robert C. Martina, autora knihy Clean Code. Byl tak laskav, že neměl námitek proti překladu.
Software je pozoruhodně citlivá disciplína. Když sáhnete do spodní vrstvy kódu a změníte jeden bit, můžete tím shodit software. Jděte do paměti a pohrávejte si náhodně s jedním bitem a velmi pravděpodobně vyvoláte nějakou formu havárie. Velmi, velmi málo systému je takto citlivých. Můžete vyrazit na jeden z tamtěch mostů, začít odmontovávat šrouby a pravděpodobně nespadnou. Mohl bych vytáhnout pistoli a začít náhodně střílet a pravděpodobně bych nezabil příliš mnoho lidí. Mohl bych jich pár zranit — ale víte — můžete schytat kulku do nohy nebo do plíce a nejspíš přežijete. Lidé jsou odolní — přežijí ztrátu nohy a tak dále. Mosty jsou odolné — přestojí ztrátu součástek. Ale software není vůbec odolný: změna jediného bitu a — BUM! - spadne. Velmi málo disciplín je takto citlivých. Ale existuje další disciplína a tou je účetnictví. Správná chyba ve správný čas ve správné tabulce — tahle jednociferná chyba může zničit firmu a poslat pachatele do vězení. Jak účetní zvládají takovou citlivost? No, mají disciplínu. A jedna ze základních disciplín je podvojné účetnictví. Vše je řečeno dvakrát. Každá transakce je vložena dvakrát — jednou na stranu má dáti a jednou na stranu dal. Tyto dvě transakce sledují oddělené matematické cesty dokud neskončí v tomto skvělém odčítání na účetní rozvaze, které musí vést k nule.[1] To je test-driven development: podvojné účetnictví. Vše je řečeno dvakrát — jednou na straně testů a jednou na straně produkčního kódu a vše se vykoná v běhu, který vede buď k zelené nebo červené čáře stejně jako nula na účetní rozvaze. Zdá se, že je to pro nás dobrý postup: přiznat a zvládnout tuto citlivost naší disciplíny.
Související články
Poznámky
[1] Účetní říkala, že to moc nedává smysl, ale nechtěl jsem do toho mistrovi moc zasahovat. Prý je ustálený obrat: „Rozvaha musí být vyrovnaná“, ale myslím, že pro nás programátory je srozumitelnější ten popis s nulou.