Prvním kritériem je způsob, jakým chcete, aby váš kód žil dál. Pokud chcete, aby ho přijaly co největší firmy a integrovaly ho do svých produktů, je permisivní licence prakticky nutností. Právní oddělení velkých společností často zakazují jakýkoli copyleft, protože by je nutil otevírat vlastní kód. Naopak pokud je pro vás klíčové, aby všechny vylepšení zůstala veřejná, copyleft je jediná cesta, jak to vymoci. Bez copyleftu může kdokoli vzít váš kód, vylepšit ho a prodávat jako uzavřený produkt, aniž by vám něco vrátil.
Sloučení dělejte přes pull request i v malém týmu. Nejde o byrokracii, ale o to, že druhý pár očí odhalí chyby, které autor přehlédne. V pull requestu popište, co změna dělá a proč, ne jen jak. Recenzent potřebuje vědět, jestli je změna správná, ne rekonstruovat záměr z diffu. Malý pull request do dvou set řádků se recenzuje výrazně lépe než tisícřádkový balík, u kterého se každý jen podepíše, aby měl klid.
Poslední věc, kterou vývojáři podceňují, je řazení. Bez explicitního ORDER BY databáze negarantuje stabilní pořadí a paginace se rozsype. Vždy řeďte podle unikátního klíče, případně přidejte id jako tiebreaker. Jinak se vám při každém dalším dotazu mohou stránky míchat, i když se data nezměnila.
Propojení obou repozitářů řešte při nasazení, ne v kódu. Aplikace by měla konfiguraci načítat z předem dané cesty nebo z proměnných prostředí, nikoli odkazovat na konkrétní soubor v repozitáři s kódem. Názvy klíčů a strukturu formátu držte v obou repozitářích shodné, ideálně popsané jednou šablonou. Když se formát změní, upravte šablonu v repozitáři s kódem a hodnoty v repozitáři s konfigurací. Rozdíl odhalíte testem, který ověří, že všechny povinné klíče jsou přítomné.
Media queries patří až na konec, ne na začát
Většina týmů se pře o to, jestli používat feature větve, nebo commitovat přímo do hlavní linie. Rozhodnutí není ideologické, ale praktické: záleží na tom, jak často vydáváte, jak velký je tým a jestli máte automatické testy. Pokud testy chybí, trvalá integrace znamená, že rozbitý kód blokuje všechny. Pokud testy máte, přímé commity do hlavní větve výrazně zkracují cestu od nápadu k nasazení.
Hlavní větev držte vždy nasaditelnou. To znamená, že každý commit do ní by měl projít testy a být schopný jít do produkce. Pokud potřebujete práci uložit, ale ještě není hotová, použijte větev nebo koncept, ne hlavní linii. Rozbitá hlavní větev zastaví celý tým – všichni na ní staví a nikdo nemůže bezpečně pokračovat. Oprava se pak dělá pod tlakem a vznikají další chyby.
Typické chyby: slučování vlastní větve bez aktualizace na hlavní linii, obrovské commity s desítkami nesouvisejících změn, force push do sdílené větve a recenzování vlastního kódu. Každá z nich má stejný důsledek – ztrátu času někoho jiného. Menší commity, častější integrace a jasná domluva fungují lépe než jakýkoli složitý model větvení.
Testování aplikace, která komunikuje s externími službami, často skončí tak, že vývojář buď spoléhá na živé API, nebo testy úplně vynechá. Ani jedno není správné. Živé API je pomalé, nedeterministické a při výpadku sítě shodí celou sadu testů. Vynechání testů zase znamená, že se chyby v integraci objeví až v produkci. Řešením je nahradit externí služby vlastními závislostmi, které simulují chování rozhraní.
Základem je vytvořit rozhraní pro každou externí službu a v testech použít jeho falešnou implementaci. Nejde o složité mockovací frameworky, stačí ručně napsaná třída, která vrací předpřipravené odpovědi. Například pro platební bránu vytvořte rozhraní PaymentGateway s metodou charge(amount). V produkci ji implementuje reálný klient, v testech třída FakePaymentGateway, která vrací úspěch nebo chybu podle scénáře. Tím získáte plnou kontrolu nad tím, co se v testu stane.
Na co si dát pozor při návrhu závislostí První pastí je příliš těsné propojení s konkrétní knihovnou. Pokud všude voláte přímo HTTP klienta, nemáte kam vložit falešnou implementaci. Vždy definujte rozhraní a injektujte závislost přes konstruktor nebo parametr. Druhou pastí je ignorování chybových stavů. Externí služba může vrátit timeout, chybu 500 nebo neplatný formát odpovědi. Testy musí tyto situace pokrýt, jinak zůstanou skryté. Třetí častou chybou je, že fake implementace vrací vždy stejnou odpověď a testy pak neodhalí změny v logice.
Jak nastavit větve, které se nerozjedou Feature větev zakládejte vždy z aktuálního stavu hlavní větve, ne z jiné rozpracované větve. Pojmenujte ji krátce a konkrétně, například issue-142-oprava-prihlaseni. Držte ji krátkou – ideálně na jeden až tři dny práce. Dlouhé větve jsou hlavní zdroj konfliktů, protože čím déle žijí, tím více se vzdalují od zbytku kódu. Před každým pushnutím si lokálně přehrajte změny na aktuální hlavní větev, ať konflikty řešíte vy, a ne kolega, který se snaží větev sloučit.
If you liked this write-up and you would certainly such as to receive more info relating to přečtěte si více kindly browse through our own web site.
