Editing
Redux a asynchronní akce: jak si zjednodušit stav aplikace
Jump to navigation
Jump to search
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
Častým problémem, na který narazíte, je asynchronní kód. Promise a async/await se chovají jinak než běžné funkce. Když nastavíte breakpoint uvnitř asynchronní funkce, mějte na paměti, že zásobník volání nemusí odpovídat tomu, co byste čekali v době, kdy se kód spustil. V takových případech pomáhá použít breakpoint přímo na řádku s await nebo využít funkci pro zpracování promise rejection v konzoli. Nikdy neignorujte červené chybové hlášky v konzoli – kliknutím na ně se dostanete přímo na místo v kódu, kde chyba vznikla.<br><br>Indexy: základ, který se vyplácí Nejčastější příčinou pomalých dotazů je chybějící index. Pokud ve WHERE klauzuli filtrujete podle sloupce, který není indexovaný, databáze musí projít celou tabulku. To je u velkých tabulek zničující. Vždy si ověřte, zda index odpovídá skutečným podmínkám. Například dotaz `SELECT * FROM objednavky WHERE zakaznik_id = 42 AND datum >'2024-01-01'` potřebuje složený index na oba sloupce, ne dva samostatné. Složený index funguje efektivně, pokud jsou sloupce v něm seřazené podle toho, jak je používáte v podmínce.<br><br>Shrnutě: testovací pyramida není dogma, ale vodítko. Přizpůsobte ji svému projektu – mikroslužby, monolit, nebo aplikace s bohatým UI budou mít jiné poměry. Klíčové je, aby testy byly rychlé, spolehlivé a dávaly smysl. Začněte s malou sadou, která pokrývá hlavní rizika, a postupně ji rozšiřujte. Uvidíte, že údržba testů bude snazší a chyby se začnou objevovat tam, kde je čekáte – a ne v produkci.<br><br>Nejčastější chyby v praxi a jak se jim vyhnout První chybou je psát jednotkové testy, které testují implementaci, ne chování. Když pak změníte vnitřní strukturu metody, testy se zbytečně rozpadnou. Zaměřte se na vstupy a výstupy, ne na to, jak je funkce napsaná. Druhým problémem je přehnané používání mocků – pokud mockujete vše, test pak neověřuje skutečnou spolupráci, ale jen vaše předpoklady. Používejte mocky jen pro hranice systému, jako je databáze nebo externí API.<br><br>Doporučuji zavést si pravidlo pro číslování verzí, které bude jasné všem členům týmu. Například hlavní číslo pro nekompatibilní změny, vedlejší pro přidání funkce a číslo opravy pro opravy chyb. Toto pravidlo by mělo platit pro všechny knihovny jednotně. Pokud máte více knihoven, které na sobě závisí, sledujte i jejich vzájemnou kompatibilitu. Vytvořte si jednoduchý seznam, který ukazuje, které verze knihoven spolu fungují. Tento seznam pak aktualizujte při každém novém vydání.<br><br>Druhým častým problémem je použití funkce na indexovaném sloupci. Když napíšete `WHERE UPPER(jmeno) = 'NOVAK'`, databáze nemůže index využít, protože musí nejprve transformovat hodnotu. Řešení je jednoduché: ukládejte data v normalizovaném tvaru (např. malými písmeny) nebo použijte funkční index, pokud to databáze podporuje.<br><br>Nakonec se vyplatí investovat čas do automatizace testů, které ověří, že projekt funguje s novou verzí knihovny. Před uvolněním nové verze knihovny spusťte testy všech projektů, které ji používají. Tím odhalíte případné problémy dříve, než se dostanou k uživatelům. Když se přesto stane, že nová verze knihovny rozbije projekt, mějte připravený postup pro rychlé vrácení zpět – ideálně pomocí reverze commitu. S tímto přístupem bude vaše verzování přehledné a projekty bez zbytečného chaosu.<br><br>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ý.<br><br>Při práci na projektu, který využívá více vlastních nebo třetích stran knihoven, se dříve či později setkáte s problémem, jak správně verzovat kód. Nejde jen o to, že každá knihovna má vlastní číslo verze. Jde hlavně o to, aby se vzájemně neblokovaly a aby bylo možné se kdykoli vrátit k funkčnímu stavu. Základním pravidlem je oddělit verze knihoven od verze hlavního projektu. Pak můžete aktualizovat jednu knihovnu bez toho, abyste museli měnit celý projekt.<br><br>Pokročilé techniky, které vám ušetří čas Kromě klasických breakpointů vyzkoušejte podmíněné breakpointy – stačí kliknout pravým tlačítkem na číslo řádku a zvolit možnost přidat podmínku. Breakpoint se pak aktivuje pouze tehdy, když je splněna vámi zadaná podmínka, například když proměnná dosáhne určité hodnoty. To je neocenitelné při ladění cyklů nebo častých funkcí. Dalším užitečným nástrojem je watch expression – v panelu Watch si můžete přidat libovolný výraz, jehož hodnota se průběžně aktualizuje při každém kroku. Tím sledujete klíčové hodnoty bez nutnosti vypisovat je do konzole.
Summary:
Please note that all contributions to IT-Core are considered to be released under the GNU Free Documentation License 1.3 or later (see
IT-Core:Copyrights
for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource.
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Navigation menu
Personal tools
Not logged in
Talk
Contributions
Create account
Log in
Namespaces
Page
Discussion
English
Views
Read
Edit
View history
More
Search
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Special pages
Tools
What links here
Related changes
Page information