Refaktoring starého JavaScriptu, který ničí čitelnost i výkon

Vůně v předsíni se psem se nedá maskovat osvěžovači. Pes má mnohem citlivější čich a umělé vůně ho dráždí. Místo toho větrejte a perte textilie, které pes používá. Pokud předsíň páchne i po vyprání, hledejte zdroj ve vodítku, obojku nebo v podložce pod miskou. Častá chyba je umístit pelíšek hned vedle dveří, kde ho pes při každém průchodu ruší a nemůže odpočívat.<br> <br> <br> <br> <img src="http://www.imageafter.com/image.php?image=b17thomas010.jpg&dl=1" style="max-width:440px;float:left;padding:10px 10px 10px 0px;border:0px;">Lamelový rošt s pružnými dřevěnými lamelami je nejběžnější a pro většinu pěnových matrací vhodný. Lamely by měly být bukové nebo březové, ne z levného smrku, který se časem ohne. Rozestup mezi lamelami rozhoduje o tom, zda matrace mezi nimi nepropadá: u pěny nad 15 cm stačí rozestup kolem sedmi centimetrů, u tenčí pěny nebo u latexu volte hustší. Drátěný rošt je pevnější, ale tvrdší a často vrzavý. Hodí se k matracím z přírodního latexu nebo ke tuhým pěnám, které potřebují pevnou podložku. Pevná deska s otvory pro odvětrání je řešení pro matrace, které se nesmí prohýbat, tedy pro tuhé ortopedické pěny a některé sendvičové konstrukce.<br> <br> <br> <br> Starý JavaScript málokdy vzniká jako chaos úmyslně. Většinou jde o vrstvení oprav: někdo přidá podmínku, další obalí funkci try/catch, třetí přidá globální proměnnou. Po dvou letech máte soubor s tisíci řádky, kde se nedá dohledat, co vlastně která část dělá. Refaktoring nezačíná přepisováním, ale měřením. Než sáhnete na kód, zjistěte, které funkce se volají odkud a které naopak nikdo nepoužívá. Pomůže prostý výpis volání nebo dočasné logování. Teprve pak má smysl cokoli měnit.<br> <br> <br> <br> V dezertu se pistáciová pasta chová jinak než třeba nugát. Je hustá a těžká, takže ji do krému zapracujte až na konci šlehání. Pokud ji přidáte do příliš tuhého krému, vzniknou hrudky. Nejlepší je nejdřív pastu rozmíchat s lžící smetany nebo mléka a teprve pak ji vmíchat. Do těsta na dort ji přidávejte místo části mouky, ale maximálně dvě lžíce, jinak těsto ztratí strukturu.<br> <br> <br> <br> <span style="font-weight: bold;">Základem jsou kvalitní</span> loupané pistácie. Nepoužívejte solené ani pražené se solí. Pokud máte pistácie v hnědé slupce, spařte je vroucí vodou, nechte minutu působit a slupku stáhněte. Potom je rozprostřete na plech a sušte v troubě při nízké teplotě asi deset minut. Tím se zbaví vlhkosti a pasta bude trvanlivější. Pozor na příliš vysokou teplotu — pistácie rychle zhořknou a tuhle chuť už ničím neschováte.<br> <br> <br> <br> Pozor na tichý vznik globálních proměnných. Chybějící var, let nebo const přiřadí hodnotu do globálního prostoru a chyba se projeví až jinde. Před refaktoringem proto projděte kód a všechny proměnné deklarujte. Zároveň odstraňte mrtvý kód, ale až poté, co ověříte, že se skutečně nikde nevolá. Zbytečné funkce často drží při životě jiné části a jejich smazáním se rozbije něco, co jste nečekali.<br> <br> <br> <br> Rozdělte kód podle odpovědnosti, ne podle pořadí vzniku Nejčastější chyba je rozdělovat soubor mechanicky na půl, aby nebyl tak dlouhý. Tím vzniknou dvě nesourodé části, které spolu stále sdílejí stav přes globální proměnné. Správný postup je opačný: najděte ucelené činnosti — načtení dat, validaci, vykreslení — a ty přesuňte do samostatných funkcí s jasnými vstupy a výstupy. Funkce, která mění globální stav nebo sahá na vzdálené objekty, se testuje jen obtížně. Snažte se, aby každá funkce dělala jednu věc a výsledek vracela, ne aby ho zapisovala někam bokem.<br> <br> <br> <br> Lamelový, drátěný, nebo pevná des<br> <br> <br> <br> Pistáciová pasta vypadá jednoduše: pistácie, trocha oleje, mixér. Jenže právě tady vzniká většina problémů. Pasta se buď připálí, zhořkne, nebo zůstane suchá a drobivá. Přitom stačí dodržet několik zásad, které rozhodují o tom, jestli výsledek bude vonět po pistáciích, nebo po spáleném oleji.<br> <br> <br> <br> Před samotným zabalením zkontrolujte hrany a rohy. I malý štípanec se při přepravě rozšíří. Pokud najdete poškození, přelepte ho samolepicí páskou, která zabrání dalšímu odlupování. Nikdy nelepíte pásku přímo na čistou plochu zrcadla – lepidlo by se při změnách teploty zatáhlo do skla a zanechalo stopy. Pásku veďte vždy jen po hraně nebo po rubové straně.<br> <br> <br> <br> Vnější závislosti a vedlejší efekty řešte postupně po malých krocích. Po každé úpravě spusťte testy nebo alespoň ručně projděte kritické scénáře. Pokud testy nemáte, napište je před refaktoringem pro současné chování — i když je kód špatný, musíte vědět, co má po změně dělat. Teprve pak můžete bezpečně měnit strukturu. Velké přepisy najednou obvykle skončí tak, že se vrátíte k původní verzi a nadšení vyprchá.<br> <br> <br> <br> Nakonec zvažte, zda má smysl starý kód vůbec zachraňovat. Pokud jde o izolovanou část, kterou lze nahradit několika řádky, je přepis rychlejší než lepení. Refaktoring se vyplatí tam, kde logika zůstává a jen potřebuje zprůhlednit. Rozhodujte podle toho, kolik času ušetříte příště, ne podle toho, jak elegantní kód dnes vypadá.