Větev, nebo fork: co rozhoduje o hladkém vývoji

Z Mazovia

Testování a ladění odhalí většinu problémů dřív než uživatelé. Reducer testujte jako čistou funkci se vstupem a očekávaným výstupem. Akce a selektory testujte izolovaně. Do prohlížeče nainstalujte nástroj pro sledování store a časové osy akcí. Díky tomu uvidíte, která akce stav změnila a proč. Pokud se přesto ztrácíte, zvažte, zda není čas část logiky přesunout mimo Redux nebo ho úplně nahradit lehčím řešením. Redux je nástroj, ne cíl.

Propojení s Reactem řešte přes useSelector a useDispatch. Vyhněte se staršímu connect, pokud nepracujete s legacy kódem. useSelector volejte s co nejmenším výběrem a používejte memoizaci, jinak každá změna store překreslí celou komponentu. Typická chyba je vracet z selektoru nový objekt při každém volání. Řešením je createSelector nebo stabilní reference. U dispatchů dávejte pozor na nekonečné smyčky, kdy akce uvnitř useEffect spouští další akci bez správných závislostí.

Většina týmů, které si stěžují na chaotické mergování, nemá problém v nástroji, ale v tom, že si nikdy nedohodla, kdo co vlastně dělá. Git je distribuovaný systém a bez pravidel se každý vývojář chová jako samostatný ostrov. První krok tedy není technický, ale organizační: sepište na jednu stránku, jaké větve budete používat a k čemu slouží. Bez toho se dřív nebo později stane, že dva lidé upraví stejný soubor a výsledek bude horší než předtím.

Portfolio místo kolonky „prax

Kde automatizace šetří čas a kde ho ztrác

Pull request není formalita, ale místo pro kontrolu Než změnu sloučíte, ať ji někdo přečte. Ne kvůli schvalovacímu razítku, ale kvůli druhému páru očí, který odhalí opomenutý případ nebo zbytečný kus kódu. V popisu změny napište, co a proč se mění, jak se to dá ověřit a na co si dát pozor. Malý pull request s jedním záměrem se dá zkontrolovat za pár minut. Velký, který míchá tři nesouvisející věci, se odkládá a při konfliktu se rozpadá. Pokud na větvi pracujete dlouho, průběžně si berte změny z main, ať konflikty řešíte po malých kusech místo jednoho velkého na konci.

U každého požadavku nastavte metodu, URL a tělo. U metod GET a DELETE tělo obvykle nebývá potřeba, u POST a PUT naopak. V záložce Body zvolte raw a formát JSON, pokud API očekává JSON. Častá chyba je zapomenutá hlavička Content-Type: application/json. Bez ní server tělo ignoruje nebo vrátí chybu 415. Stejně tak si dejte pozor na to, zda posíláte data jako form-data, x-www-form-urlencoded nebo raw – záměna vede k nečitelným chybám.

Poslední pravidlo se týká komunikace. Oddělené odhady mějte i odděleně viditelné. Když stakeholder vidí jen jedno číslo za celou položku, nemá šanci pochopit, proč se práce zpozdila. Když vidí dvě čísla, snadno rozliší, zda vázne analytika, nebo implementace, a může se rozhodnout, co s tím dělat. Odhad je nástroj pro rozhodování, ne závazek. Jakmile ho začnete používat jako trest, tým přestane odhadovat poctivě a začne odhadovat bezpečně.

Poslední věc, na kterou se zapomíná: domluvte se na jednom stylu commit zpráv a držte se ho. Krátký souhrn v rozkazovacím způsobu a v těle vysvětlení proč, ne co. Historie, ze které se dá číst, je pro tým cennější než jakýkoli nástroj nad ní. A když se pravidla přestanou hodit, změňte je společně a napište to do repozitáře. Jediné skutečně špatné pravidlo je to, o kterém si každý myslí něco jiného.

Základem je dlouho žijící hlavní větev, obvykle main nebo master, která by měla vždy obsahovat nasaditelný stav. Do ní se nikdy necommituje přímo. Každá změna vzniká na krátké větvi, jejíž název nese účel: oprava přihlášení, nový filtr v seznamu, aktualizace závislostí. Krátká větev znamená jednotky dní, ne týdny. Čím déle větev žije, tím větší je vzdálenost od main a tím bolestivější je návrat. Větve pojmenovávejte malými písmeny s pomlčkami, ať se v nich dá hledat a ať je na první pohled jasné, co řeší.

Redux není univerzální řešení pro každou React aplikaci. Než ho přidáte, zjistěte, zda skutečně potřebujete globální stav, který sdílí mnoho nesouvisejících komponent. U jednoduchých formulářů nebo lokálního UI stavu si vystačíte s useState a useContext. Redux začíná dávat smysl ve chvíli, kdy se stejná data mění z několika míst, potřebujete historii změn nebo ladíte složité toky. Rozhodnutí odložte, dokud nenarazíte na konkrétní problém, ne na předpokládaný.

Základem je správně navržený store. Nedávejte do něj vše, co aplikace obsahuje. Držte v něm pouze data, která musí přežít překreslení komponenty nebo je sdílí více částí aplikace. Lokální stav ponechte v komponentách. Typická chyba je ukládat do Reduxu stav modálních oken, načítání jednotlivého tlačítka nebo hodnotu rozepsaného inputu. Výsledkem je obrovský store, kterému nikdo nerozumí a každá změna vyžaduje zásah do několika souborů.