Co dělat, když chcete testovat software a nemáte praxi?

Z Mazovia

Kdy je lepší nechat rozhodnutí na nástroji Extrakce metody nebo konstanty je další častý refaktorovací krok. Označte blok kódu, spusťte příkaz pro extrakci a prostředí vytvoří novou metodu s odpovídajícím podpisem a nahradí původní blok voláním. U konstant to funguje stejně — z literálu se stane pojmenovaná konstanta. Pozor na jeden typický problém: pokud extrahujete kód, který používá lokální proměnné, nástroj je musí předat jako parametry. Zkontrolujte, zda výsledný podpis dává smysl a zda se některé parametry nedají sloučit. Automatika ne vždy odhadne nejčistší podobu.

Základem je přesun a přejmenování. Pokud přepíšete název proměnné nebo metody ručně na jednom místě, zbytek kódu zůstane nekonzistentní. Místo toho použijte příkaz pro přejmenování symbolu (obvykle klávesová zkratka pro rename). Prostředí projde všechny výskyty v projektu a změní je najednou, včetně volání v jiných souborech. Stejně tak přesun celé funkce nebo třídy do jiného modulu — nástroj za vás upraví importy a reference. Ruční přesun znamená dohledávat každé volání, což je přesně ta práce, které se chcete vyhnout.

Hlavní větev musí být vždy nasaditelná. To znamená, že každý požadavek na sloučení projde automatickou kontrolou a testy. Pokud testy nejsou, zaveďte alespoň ruční ověření na testovacím prostředí. Nikdy nesloučujte změnu, která rozbíjí build, i kdyby byla sebelepší. Oprava rozbité hlavní větve zdrží celý tým a často se řeší pozdě v noci.

Nakonec si nastavte kontrolu před uložením změn. Ať se při každém commitu ověří, že překladové soubory jsou platné a že nechybí klíče. Stačí krátký skript, který porovná klíče mezi jazyky a vypíše rozdíly. Tím se chyby zachytí dřív, než se dostanou do hlavní větve. Projekt s více jazyky není složitější proto, že má víc jazyků, ale proto, že se v něm přestalo dodržovat pořadí. Udržet pořádek je levnější než ho později obnovovat.

Typické chyby vznikají ve chvíli, kdy se překlad bere jako druhořadá část. Chybějící klíč se řeší až za běhu, místo aby ho odhalila kontrola při sestavení. Další častou chybou je duplikování textů místo odkazů, takže se při změně opraví jen jedna verze. A třetí: jazyk se natvrdo zapisuje do kódu, místo aby se načítal z konfigurace. Všechny tři se dají odstranit jednoduchým pravidlem – každý text má jeden zdroj a každý jazyk má vlastní soubor.

Nejčastější chyba je kombinace ručních a automatických kroků bez kontroly. Když část změníte sami a část necháte na nástroji, vznikne nekonzistentní stav, který se špatně dohledává. Proto refaktorujte po malých celcích, po každém kroku spusťte testy a používejte verzovací systém k tomu, abyste se mohli vrátit. Nástroje nejsou neomylné, ale při dodržení tohoto postupu je ruční přepisování pomalejší a riskantnější ve srovnání s tím, co máte k dispozici přímo v editoru.

Dalším pomocníkem jsou strukturální výběry a navigace. Místo ručního hledání textu použijte skok na definici, na implementaci nebo na všechny reference. Tím získáte přehled o tom, co všechno bude refaktorování ovlivňovat. Pokud nástroj nabízí i přeuspořádání parametrů nebo změnu podpisu metody, použijte ji — upraví všechna volání konzistentně. Ručně byste na některé zapomněli.

Prvním krokem je oddělit jazyky podle účelu, ne podle pořadí, v jakém jste je do projektu přidali. V praxi to znamená jednu složku pro zdrojový kód, jednu pro překlady a jednu pro dokumentaci. Překladové soubory pojmenujte jednotně, například kód jazyka a oblast, ať se v nich dá vyhledávat. Pokud používáte víc formátů, držte se jednoho hlavního a ostatní berte jako export. Míchání JSON, YAML a vlastních textových formátů v jedné složce je nejčastější důvod, proč se v projektu přestane dát orientovat.

Ruční přepisování kódu je nejpomalejší a nejchybovější způsob refaktorování. Přitom většina editorů a vývojových prostředí už obsahuje nástroje, které stejnou práci zvládnou za zlomek času a bez překlepů. Klíčem je vědět, které to jsou a kdy je použít. Nejde o žádné pluginy ani rozšíření — stačí to, co je součástí prostředí od instalace.

Při větším refaktorování se hodí náhled změn. Většina prostředí umí zobrazit diff ještě před potvrzením — tedy seznam souborů a konkrétní řádky, které se změní. Tento krok nepodceňujte. Právě tady odhalíte, že přejmenování zasáhlo i místo, kde šlo o jiný symbol se stejným názvem. Bez náhledu zjistíte chybu až při kompilaci nebo až v produkci. Náhled je rychlejší než zpětné hledání.

Naučte se základy práce s nástroji, které se v oboru používají běžně. Nejde o to ovládat deset systémů, ale umět vysvětlit, k čemu slouží evidence chyb, testovací scénáře nebo verzovací systém. Mnoho juniorů se zasekne na tom, že se učí nástroje nazpaměť, a zapomíná, že důležitější je logika testování. Nástroj se naučíte za týden, přemýšlet o rizicích a prioritách trvá déle.