<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://rikkiepedia.nl/index.php?action=history&amp;feed=atom&amp;title=Z%C3%A1sady_%C4%8Dist%C3%A9ho_k%C3%B3du_v_JavaScriptu_pro_ka%C5%BEdodenn%C3%AD_praxi</id>
	<title>Zásady čistého kódu v JavaScriptu pro každodenní praxi - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://rikkiepedia.nl/index.php?action=history&amp;feed=atom&amp;title=Z%C3%A1sady_%C4%8Dist%C3%A9ho_k%C3%B3du_v_JavaScriptu_pro_ka%C5%BEdodenn%C3%AD_praxi"/>
	<link rel="alternate" type="text/html" href="https://rikkiepedia.nl/index.php?title=Z%C3%A1sady_%C4%8Dist%C3%A9ho_k%C3%B3du_v_JavaScriptu_pro_ka%C5%BEdodenn%C3%AD_praxi&amp;action=history"/>
	<updated>2026-08-22T00:45:22Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://rikkiepedia.nl/index.php?title=Z%C3%A1sady_%C4%8Dist%C3%A9ho_k%C3%B3du_v_JavaScriptu_pro_ka%C5%BEdodenn%C3%AD_praxi&amp;diff=107140&amp;oldid=prev</id>
		<title>CharlesGil5973 at 17:28, 21 August 2026</title>
		<link rel="alternate" type="text/html" href="https://rikkiepedia.nl/index.php?title=Z%C3%A1sady_%C4%8Dist%C3%A9ho_k%C3%B3du_v_JavaScriptu_pro_ka%C5%BEdodenn%C3%AD_praxi&amp;diff=107140&amp;oldid=prev"/>
		<updated>2026-08-21T17:28:47Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 17:28, 21 August 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Dalším krokem &lt;/del&gt;je &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;vytvoření generických pomocníků – takzvaných action creatorů &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;reducerů&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;které &lt;/del&gt;se &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;starají o všechny asynchronní akce univerzálně. Místo psaní desítek podobných případů pro každou API volání si definujete jeden generický typ akce &lt;/del&gt;s &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;parametry jako requestName a payload&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Reducer pak na základě requestName aktualizuje odpovídající část stavu&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Tím eliminujete duplicitu &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;snižujete riziko chyb při ručním přepisování&lt;/del&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Nejprve si vyberte projekt&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;který &lt;/del&gt;skutečně &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;používáte, nebo který vás tematicky baví&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Projděte si jeho dokumentaci&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;zvláště soubory s pokyny pro přispěvatele. Ty obvykle obsahují informace o tom, jak &lt;/del&gt;se &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;staví projekt&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;jaké jsou konvence pro psaní kódu &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;jak probíhá review&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pokud takový soubor chybí&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;podívejte se na strukturu repozitáře &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;na to, jak vypadají poslední commity&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Dobrým začátkem je hledat problémy označené jako vhodné pro začátečníky – obvykle bývají menší, dobře popsané &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;mají jasný rozsah&lt;/del&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Nejjednodušší &lt;/del&gt;a pro &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;menší týmy nejpraktičtější je model trunk-based development&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Všechny změny směřují do &lt;/del&gt;hlavní větve&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, ale každá funkce nebo oprava dostane vlastní krátkodobou větev&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pravidlo zní: jedna &lt;/del&gt;větev &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;= jeden úkol&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Větve pojmenovávejte podle čísla úkolu nebo srozumitelného popisu&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;například feature/login-form nebo fix/empty-state. Hlavní větev zůstává vždy stabilní a připravená k nasazení&lt;/del&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Redukce stavu na tři základní hodnoty Základní trik spočívá v tom&lt;/del&gt;, že &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;nestavíte stav jako sbírku volných proměnných&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ale jako objekt s jasnou strukturou. Místo abyste měli loading&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;error &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;data zvlášť&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;vytvořte si jeden objekt, který tyto tři stavy sdružuje. Takový objekt pak můžete snadno serializovat&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;testovat &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;předávat komponentám&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Typicky vypadá jako T&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;error: null . Tím se reducer zjednoduší na přepínač&lt;/del&gt;, který &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;mění pouze tyto tři hodnoty&lt;/del&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Typické chyby při zavádění NoSQL Nejčastější chybou &lt;/del&gt;je &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;přenést relační model &lt;/del&gt;do &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;NoSQL beze změny&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pokud začnete modelovat dokumenty s odkazami jako cizí klíče a pak je spojujete ručně&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ztrácíte výhodu rychlosti&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Místo toho denormalizujte – ukládejte data tak, jak &lt;/del&gt;je &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;čtete&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Například u uživatele si rovnou uložte i jeho poslední objednávky&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;abyste nemuseli dělat druhé dotazy&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pozor &lt;/del&gt;ale &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;na konzistenci při aktualizacích &lt;/del&gt;– &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;musíte pravidelně synchronizovat duplicitní data, jinak se vám rozsype konzistence&lt;/del&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Druhý častý problém &lt;/del&gt;je &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ignorování dotazovacích vzorů&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;NoSQL databáze nejsou univerzální – každý typ má specifické možnosti dotazování&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Než nasadíte&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;zkuste si napsat pět nejčastějších dotazů&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;které vaše aplikace bude spouštět&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pokud zjistíte&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;že potřebujete fulltextové vyhledávání &lt;/del&gt;nebo &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;složité agregace&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;možná je lepší zůstat u relační databáze nebo zkombinovat obojí (tzv. polyglot persistence). Také si rozmyslete, jak budete data mazat – některé NoSQL databáze nemají efektivní operaci pro smazání velkého rozsahu dat&lt;/del&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Asynchronní operace&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;jako &lt;/del&gt;je &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;načítání dat z API nebo zápis do databáze&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;přinášejí &lt;/del&gt;do &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Reduxu vrstvu složitosti&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;která &lt;/del&gt;se &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;dříve nebo &lt;/del&gt;později &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;projeví na stavu aplikace&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Nejčastější chybou je ukládání všech mezistavů, chyb &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;odpovědí do jednotlivých polí&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;což vede &lt;/del&gt;k &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;rozsáhlým &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;nepřehledným reducerům&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Řešením je zavést si jednotný vzor&lt;/del&gt;, který &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;pokryje běžné stavy – čekání, úspěch &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;selhání – &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ten pak použít &lt;/del&gt;pro &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;všechny asynchronní akce&lt;/del&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pozor na &lt;/del&gt;typické &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;úskalí: pokud používáte middleware jako Redux Thunk&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;nezapomeňte, že akce typu pending, fulfilled &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;rejected jsou jen doporučené konvence&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Můžete si &lt;/del&gt;je &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;libovolně pojmenovat&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ale musíte je důsledně používat&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Častou chybou je míchání více stylů &lt;/del&gt;– &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;někde přímo měníte stav&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;jinde spoléháte na middleware. To vede k nepředvídatelnému chování a stavu, který není deterministický&lt;/del&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Code review by mělo být povinné &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;rychlé&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Ideálně do 24 hodin&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;jinak se práce zablokuje. Recenzent se zaměřuje na logiku&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;čitelnost a na to&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;zda změna skutečně řeší daný úkol. Nenechte se unést stylem &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;drobnostmi – to odvádí pozornost&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pokud narazíte &lt;/del&gt;na &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;větší problém&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;rovnou to napište do komentáře a nechte autora opravit. Po schválení slučte větev pomocí merge commitu&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;který zachovává kontext celé větve&lt;/del&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Přispívání do open source je běh &lt;/del&gt;na &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;dlouhou trať&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ne sprint&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Naučte &lt;/del&gt;se &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;číst kód ostatních, nechte si poradit &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;buďte trpěliví. Každý review vám pomůže pochopit&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;jak funguje týmová práce na dálku&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Za pár měsíců zjistíte&lt;/del&gt;, že &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;se vám výrazně zlepšily programátorské dovednosti &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;že máte rozhled, který &lt;/del&gt;se &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;v běžné práci jen tak nezíská&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;A když narazíte na problém, nevzdávejte to – zeptejte se, komunita obvykle ráda poradí, pokud vidí&lt;/del&gt;, že &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;jste to s projektem mysleli vážně&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Typickou chybou je dlouhodobé ignorování hlavní větve. Pokud vaše feature větev žije déle než pár dní, riziko konfliktů roste exponenciálně. Stejně problematické &lt;/ins&gt;je &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;i nevhodné používání force push, které může přepsat historii sdílené větve &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;rozbít práci kolegům. Pokud musíte force push použít&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;vždy to oznamte týmu a ujistěte &lt;/ins&gt;se&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, že nikdo jiný &lt;/ins&gt;s &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;danou větví nepracuje&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pro sdílené větve (např&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;develop) force push nepoužívejte vůbec — místo toho vytvořte novou větev &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;požádejte o merge request&lt;/ins&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Retrospektiva je nejcennější&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;když přestane být formálním rituálem a začne tým &lt;/ins&gt;skutečně &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;posouvat&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Často ale skončí u povzdechů&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;co &lt;/ins&gt;se &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;nepovedlo&lt;/ins&gt;, a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;u dlouhého seznamu bez konkrétních kroků&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Klíčem k efektivní retrospektivě je strukturovaná zpětná vazba&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;která dává každému slovu jasný rámec &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;směr&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Bez ní se diskuse rozpadá do obecných frází &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;tým se točí v kruhu&lt;/ins&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Verzování kódu při paralelním vývoji více feature větví je častým zdrojem konfliktů a ztráty času. Klíčem k efektivní práci je disciplína &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;jasná pravidla, která platí &lt;/ins&gt;pro &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;celý tým&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Než začnete s jakoukoli větví, ujistěte se, že máte aktuální stav &lt;/ins&gt;hlavní větve &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;a že vaše lokální změny jsou založeny na stabilním bodu&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Ideálně si před vytvořením nové větve stáhněte nejnovější změny z remote a vytvořte &lt;/ins&gt;větev &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;až z aktuálního stavu&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Tím se vyhnete zbytečným konfliktům&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;které vznikají při mergování starých větví&lt;/ins&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Na závěr: DevOps je cesta, ne cíl. Počítejte s tím&lt;/ins&gt;, že &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;první nasazení bude trvat déle&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;než čekáte&lt;/ins&gt;, a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;že narazíte na odpor. Ale pokud vytrváte&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;odměnou vám bude rychlejší reakce na změny&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;stabilnější provoz &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;méně nočních hlášek&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Začněte dnes malým krokem – třeba tím&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;že zautomatizujete jeden ruční úkon&lt;/ins&gt;, který &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;vás nejvíc štve. Zbytek přijde postupně&lt;/ins&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Dalším krokem &lt;/ins&gt;je &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;kontinuální integrace a doručování (CI/CD). Vytvořte pipeline, která automaticky sestaví aplikaci, spustí testy a nasadí ji &lt;/ins&gt;do &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;testovacího prostředí&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Nejdřív nasazujte jen do stagingu&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;až po stabilizaci i do produkce&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Typickou chybou začátečníků &lt;/ins&gt;je &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;snaha o dokonalou automatizaci hned napoprvé&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Mnohem lepší je začít s jednoduchým skriptem, který funguje&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;a postupně ho vylepšovat&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Deploye dělejte častěji, &lt;/ins&gt;ale &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;v menších dávkách &lt;/ins&gt;– &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;usnadní to hledání chyb&lt;/ins&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Další oblastí &lt;/ins&gt;je &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;práce s asynchronním kódem&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Místo hlubokého zanořování Promise&lt;/ins&gt;.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;then() používejte async/await&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;který činí tok kódu lineárnějším. Dbejte na správné zpracování chyb – try/catch by mělo obalovat pouze rizikovou část&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ne celou logiku&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;A nikdy nezapomeňte na ošetření okrajových případů&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;jako jsou prázdné pole &lt;/ins&gt;nebo &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;neplatné vstupy&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;protože právě tam se často skrývají chyby&lt;/ins&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Čistý kód není o osobním vkusu&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ale o udržitelnosti projektu. Když píšete JavaScript, každé rozhodnutí – od názvu proměnné po strukturu funkcí – ovlivní, jak snadno se bude kód číst a měnit. Základním pravidlem &lt;/ins&gt;je, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;že kód se píše jednou, ale čte se mnohokrát. Proto se vyplatí investovat čas &lt;/ins&gt;do &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;srozumitelnosti hned na začátku&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;místo abyste &lt;/ins&gt;se &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;k němu vraceli &lt;/ins&gt;později &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;s frustrací&lt;/ins&gt;.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Na závěr proveďte zátěžový test &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;porovnejte výkon. Pokud narazíte na chyby&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;vraťte se &lt;/ins&gt;k &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;logům &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;postupně upravujte schéma&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Migrace není jednorázová akce, ale iterativní proces&lt;/ins&gt;, který &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;vyžaduje pečlivou přípravu. S dobrým plánem &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;důkladným testováním se však vyhnete většině problémů &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;získáte stabilní základ &lt;/ins&gt;pro &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;další vývoj&lt;/ins&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Časté chyby, které kazí čistotu Mezi &lt;/ins&gt;typické &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;chyby patří používání magických čísel – hodnot bez vysvětlení&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;například if (status === 3). Místo toho definujte konstantu STATUS_APPROVED = 3 &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;používejte ji&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Podobně se vyvarujte dlouhým řetězením podmínek if…else; pokud jich &lt;/ins&gt;je &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;víc než dvě&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;zvažte použití objektu nebo mapy pro mapování stavů&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Také se vyhněte mutování vstupních parametrů &lt;/ins&gt;– &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;místo toho vracejte nové hodnoty&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;což usnadňuje ladění&lt;/ins&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Nejprve si vytvořte kompletní inventář schématu: seznam tabulek, indexů, pohledů, triggerů &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;uložených procedur&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;V MySQL se často používají typy jako TINYINT&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ENUM nebo AUTO_INCREMENT&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;zatímco PostgreSQL preferuje SMALLINT&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;vlastní enum typy &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;sekvence&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Při převodu datových typů dejte pozor &lt;/ins&gt;na &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;rozdíly v práci s řetězci: MySQL porovnává texty case-insensitive podle collation&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;PostgreSQL je case-sensitive&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;což může změnit výsledky dotazů&lt;/ins&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Při řešení konfliktů se zaměřte &lt;/ins&gt;na &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;to&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;co je skutečně potřeba změnit&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Než začnete konflikt ručně upravovat, podívejte &lt;/ins&gt;se &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;na obě verze kódu &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;pochopte&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;proč ke konfliktu došlo&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Často se stává&lt;/ins&gt;, že &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;konflikt je pouze zdánlivý — obě větve dělají stejnou věc jiným způsobem. V takovém případě je lepší konzultovat s autorem druhé změny &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;domluvit &lt;/ins&gt;se &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;na jednotném řešení&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Po vyřešení konfliktů vždy spusťte testy a zkontrolujte&lt;/ins&gt;, že &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;vaše změny nezpůsobily regresi&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key Rikkie_my_wiki:diff:1.41:old-107111:rev-107140:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>CharlesGil5973</name></author>
	</entry>
	<entry>
		<id>https://rikkiepedia.nl/index.php?title=Z%C3%A1sady_%C4%8Dist%C3%A9ho_k%C3%B3du_v_JavaScriptu_pro_ka%C5%BEdodenn%C3%AD_praxi&amp;diff=107111&amp;oldid=prev</id>
		<title>RileyStClair: Created page with &quot;Dalším krokem je vytvoření generických pomocníků – takzvaných action creatorů a reducerů, které se starají o všechny asynchronní akce univerzálně. Místo psaní desítek podobných případů pro každou API volání si definujete jeden generický typ akce s parametry jako requestName a payload. Reducer pak na základě requestName aktualizuje odpovídající část stavu. Tím eliminujete duplicitu a snižujete riziko chyb při ručním přepisování....&quot;</title>
		<link rel="alternate" type="text/html" href="https://rikkiepedia.nl/index.php?title=Z%C3%A1sady_%C4%8Dist%C3%A9ho_k%C3%B3du_v_JavaScriptu_pro_ka%C5%BEdodenn%C3%AD_praxi&amp;diff=107111&amp;oldid=prev"/>
		<updated>2026-08-21T17:27:37Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;Dalším krokem je vytvoření generických pomocníků – takzvaných action creatorů a reducerů, které se starají o všechny asynchronní akce univerzálně. Místo psaní desítek podobných případů pro každou API volání si definujete jeden generický typ akce s parametry jako requestName a payload. Reducer pak na základě requestName aktualizuje odpovídající část stavu. Tím eliminujete duplicitu a snižujete riziko chyb při ručním přepisování....&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Dalším krokem je vytvoření generických pomocníků – takzvaných action creatorů a reducerů, které se starají o všechny asynchronní akce univerzálně. Místo psaní desítek podobných případů pro každou API volání si definujete jeden generický typ akce s parametry jako requestName a payload. Reducer pak na základě requestName aktualizuje odpovídající část stavu. Tím eliminujete duplicitu a snižujete riziko chyb při ručním přepisování.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Nejprve si vyberte projekt, který skutečně používáte, nebo který vás tematicky baví. Projděte si jeho dokumentaci, zvláště soubory s pokyny pro přispěvatele. Ty obvykle obsahují informace o tom, jak se staví projekt, jaké jsou konvence pro psaní kódu a jak probíhá review. Pokud takový soubor chybí, podívejte se na strukturu repozitáře a na to, jak vypadají poslední commity. Dobrým začátkem je hledat problémy označené jako vhodné pro začátečníky – obvykle bývají menší, dobře popsané a mají jasný rozsah.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Nejjednodušší a pro menší týmy nejpraktičtější je model trunk-based development. Všechny změny směřují do hlavní větve, ale každá funkce nebo oprava dostane vlastní krátkodobou větev. Pravidlo zní: jedna větev = jeden úkol. Větve pojmenovávejte podle čísla úkolu nebo srozumitelného popisu, například feature/login-form nebo fix/empty-state. Hlavní větev zůstává vždy stabilní a připravená k nasazení.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Redukce stavu na tři základní hodnoty Základní trik spočívá v tom, že nestavíte stav jako sbírku volných proměnných, ale jako objekt s jasnou strukturou. Místo abyste měli loading, error a data zvlášť, vytvořte si jeden objekt, který tyto tři stavy sdružuje. Takový objekt pak můžete snadno serializovat, testovat a předávat komponentám. Typicky vypadá jako T, error: null . Tím se reducer zjednoduší na přepínač, který mění pouze tyto tři hodnoty.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Typické chyby při zavádění NoSQL Nejčastější chybou je přenést relační model do NoSQL beze změny. Pokud začnete modelovat dokumenty s odkazami jako cizí klíče a pak je spojujete ručně, ztrácíte výhodu rychlosti. Místo toho denormalizujte – ukládejte data tak, jak je čtete. Například u uživatele si rovnou uložte i jeho poslední objednávky, abyste nemuseli dělat druhé dotazy. Pozor ale na konzistenci při aktualizacích – musíte pravidelně synchronizovat duplicitní data, jinak se vám rozsype konzistence.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Druhý častý problém je ignorování dotazovacích vzorů. NoSQL databáze nejsou univerzální – každý typ má specifické možnosti dotazování. Než nasadíte, zkuste si napsat pět nejčastějších dotazů, které vaše aplikace bude spouštět. Pokud zjistíte, že potřebujete fulltextové vyhledávání nebo složité agregace, možná je lepší zůstat u relační databáze nebo zkombinovat obojí (tzv. polyglot persistence). Také si rozmyslete, jak budete data mazat – některé NoSQL databáze nemají efektivní operaci pro smazání velkého rozsahu dat.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Asynchronní operace, jako je načítání dat z API nebo zápis do databáze, přinášejí do Reduxu vrstvu složitosti, která se dříve nebo později projeví na stavu aplikace. Nejčastější chybou je ukládání všech mezistavů, chyb a odpovědí do jednotlivých polí, což vede k rozsáhlým a nepřehledným reducerům. Řešením je zavést si jednotný vzor, který pokryje běžné stavy – čekání, úspěch a selhání – a ten pak použít pro všechny asynchronní akce.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Pozor na typické úskalí: pokud používáte middleware jako Redux Thunk, nezapomeňte, že akce typu pending, fulfilled a rejected jsou jen doporučené konvence. Můžete si je libovolně pojmenovat, ale musíte je důsledně používat. Častou chybou je míchání více stylů – někde přímo měníte stav, jinde spoléháte na middleware. To vede k nepředvídatelnému chování a stavu, který není deterministický.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Code review by mělo být povinné a rychlé. Ideálně do 24 hodin, jinak se práce zablokuje. Recenzent se zaměřuje na logiku, čitelnost a na to, zda změna skutečně řeší daný úkol. Nenechte se unést stylem a drobnostmi – to odvádí pozornost. Pokud narazíte na větší problém, rovnou to napište do komentáře a nechte autora opravit. Po schválení slučte větev pomocí merge commitu, který zachovává kontext celé větve.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Přispívání do open source je běh na dlouhou trať, ne sprint. Naučte se číst kód ostatních, nechte si poradit a buďte trpěliví. Každý review vám pomůže pochopit, jak funguje týmová práce na dálku. Za pár měsíců zjistíte, že se vám výrazně zlepšily programátorské dovednosti a že máte rozhled, který se v běžné práci jen tak nezíská. A když narazíte na problém, nevzdávejte to – zeptejte se, komunita obvykle ráda poradí, pokud vidí, že jste to s projektem mysleli vážně.&lt;/div&gt;</summary>
		<author><name>RileyStClair</name></author>
	</entry>
</feed>