Pytest vs. ruční testy: co odhalí dřív
Každá webová stránka je ve skutečnosti jen soubor HTML, který prohlížeč přečte a vykreslí. HTML definuje strukturu a obsah: nadpisy, odstavce, seznamy, obrázky, odkazy. CSS pak určuje, jak zařídit malou kuchyni tyto prvky vypadají – barvy, písmo, rozestupy, rozvržení. Pokud začínáte, zapomeňte na vizuální editory a napište první stránku ručně v textovém editoru. Uložte ji s příponou .html a otevřete v prohlížeči. Uvidíte okamžitě výsledek a pochopíte, co která značka dělá.
Délka funkcí je druhý nejčastější problém. Funkce, která má přes padesát řádků, obvykle dělá tři věci najednou. Rozdělte ji tak, aby každá část měla jednu odpovědnost a šla popsat jednou osvětlení v obývákuětou. Když se v těle funkce objeví vnořené if uvnitř for uvnitř if, je to signál k extrakci. Čitelnost nezískáte zkrácením zápisu, ale zmenšením toho, co musí čtenář udržet v hlavě najednou.
Nakonec komentáře. Komentář, který opisuje, co řádek dělá, je šum. Užitečný komentář vysvětluje proč: proč je tu zpoždění, proč se kontrola přeskočí, odkud pochází magická konstanta. If you have any sort of questions regarding where and just how to utilize Rady pro rekonstrukci, you could contact us at the web-site. Pokud kód potřebuje vysvětlení na každém druhém řádku, není problém v komentářích, ale v návrhu. Čistý kód se nepozná podle toho, že se líbí autorovi, ale podle toho, že v něm kolega najde chybu dřív, než ztratí trpělivost.
Vyhýbejte se sdílenému měnitelnému stavu, kde to jde. Globální proměnná, do které zapisuje několik funkcí, je nejrychlejší cesta k chybě, kterou budete hledat celý den. Předávejte hodnoty parametrem a vracejte nové objekty místo přepisování vstupu. Když už stav potřebujete, držte ho na jednom místě a pojmenujte ho tak, aby bylo zřejmé, kdo ho vlastní. Nepřekvapujte čtenáře: funkce, která něco mění, má mít sloveso v názvu, funkce, která jen vrací hodnotu, ne.
Konzistence porazí osobní vkus V týmu je jedno, jestli používáte středníky nebo ne. Zásadní je, že všude stejně. Stejně tak uvozovky, odsazení nebo pořadí importů. Nastavte si nástroj, který formátování vynutí při ukládání souboru, a přestaňte o stylu diskutovat v code review. Reviewer má řešit logiku a hraniční stavy, ne to, jestli je mezera před závorkou. Bez automatického formátování se každá revize zvrhne v dohadování a skutečné chyby proklouznou.
Pro privátní feature větev je rebase na aktuální main obvykle lepší volbou než merge. Přepíše vaše commity na nový základ a výsledná historie zůstane lineární. Postup je přímočarý: nejprve si uložte rozdělanou práci nebo ji commitněte, pak spusťte rebase na main a řešte konflikty po jednom commitu. Nikdy nerebasujte větev, kterou už někdo jiný stáhl a postavil na ní svoji práci. Přepsané commity ostatním rozbijí repozitář a vznikne zmatek, který se řeší hodiny.
Užitečné je vést si záznam o skutečně stráveném čase a porovnávat ho s odhadem. Po několika projektech získáte osobní koeficient – poměr mezi odhadem a realitou. Někdo má tendenci podceňovat o dvacet procent, jiný o padesát. Jakmile svůj koeficient znáte, můžete ho aplikovat na budoucí odhady. Stejně důležité je odhadovat v týmu a ptát se těch, kdo budou práci dělat. Odhad shora od manažera bývá přesný jen náhodou.
CSS: selektory a kaskáda CSS připojíte třemi způsoby: inline přes atribut style, do hlavičky přes tag style, nebo jako externí soubor. Externí soubor je nejlepší volba, protože se načte pro všechny stránky a udržíte pořádek. Selektory určují, na které prvky se styl použije. Třída začíná tečkou, identifikátor mřížkou. Pozor na specificitu: čím konkrétnější selektor, tím vyšší priorita. Když se styly perou, prohlížeč vyhraje ten s vyšší specificitou, případně ten pozdější. Řešení není přidávat další a další pravidla, ale pochopit kaskádu a zdědit vlastnosti.
Základem je rozdělit úkol na dílčí kroky, z nichž každý zabere nejvýše jeden den. U delších celků vzniká velký prostor pro skrytou práci – testování, integraci, opravy. Pokud úkol nelze rozdělit, je to signál, že mu nerozumíte. V takovém případě je lepší strávit hodinu analýzou než týden opravováním špatného odhadu. Do každého kroku pak započítejte i čas na revizi kódu a na napsání testů.
Nakonec si nastavte pravidelnou revizi. Jednou za čas projděte konfigurační soubory a zkontrolujte, zda všechny volby stále něco dělají. Odstraňte to, co se už nepoužívá, a sloučte to, co se překrývá. Sjednocená konfigurace není cíl, ale průběžná údržba. Když ji budete držet krátkou a srozumitelnou, tým přestane řešit prostředí a rekonstrukce koupelny krok za krokemčne řešit skutečnou práci.
Parametrizace je místo, kde pytest šetří nejvíc práce. Místo pěti téměř stejných funkcí napište jednu s dekorátorem @pytest.mark.parametrize. Ten dostane seznam vstupů a očekávaných výstupů a pytest vygeneruje samostatné testy. Když jeden případ selže, vidíte který. Pozor na mutable argumenty v parametrech, například seznamy sdílené mezi případy; pokud je funkce upravuje, další test dostane už změněný objekt. Řešením je vytvářet data uvnitř testu nebo použít fixture.