Editing
Když chcete ověřit reducery a async akce bez běžícího prohlížeče
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!
První skutečný projekt ať je malý, ale dokončený. Ideálně aplikace, kterou sami použijete: poznámky, jednoduchý převodník jednotek nebo sledování návyků. Rozdělení do obrazovek navrhněte na papíře dřív, než napíšete první řádek. Zjistíte, že většina chyb nevzniká v kódu, ale v nejasném zadání. Každou obrazovku postavte jako samostatnou část, která dostane data z jednoho místa. Když se data začnou tahat z pěti různých zdrojů, aplikace se rozpadne při první změně.<br><br>Druhý častý problém je práce s transakcemi a zámky. MySQL má výchozí autocommit a特定 chování u nevýkonných dotazů, PostgreSQL je přísnější. Dlouhé transakce blokují úklid starých verzí řádků a mohou nafouknout databázi. Při migraci proto zkontrolujte, zda aplikace neotevírá transakce zbytečně dlouho. Pozor také na ON DUPLICATE KEY UPDATE — v PostgreSQL použijete INSERT … ON CONFLICT. Nahrazení není mechanické, musíte určit konfliktní sloupec.<br><br>Ladění berte jako běžnou součást práce, ne jako trest. Nastavte si logování s jasnými značkami a čtěte výpisy chyb odshora dolů, protože příčina bývá v prvních řádcích, ne v posledním. Při každé chybě si napište do poznámek, co ji způsobilo. Po měsíci budete mít vlastní seznam, který je cennější než jakýkoli kurz. Nebojte se používat simulátor pro rychlé kontroly a skutečný telefon pro chování na dotyk, baterii a pomalé síti.<br><br>Jakmile první aplikace běží, nespěchejte s jejím zveřejněním. Nechte ji týden používat někým jiným a sledujte, kde se zasekne. Verzujte kód od prvního dne, i když pracujete sami. Zvykněte si psát krátké popisy změn, které za půl roku pochopíte. Až budete mít hotové dvě až tři malé aplikace, teprve pak má smysl řešit publikaci, propagaci a další růst. Do té doby je každá hodina strávená u kódu investicí, která se vrátí v podobě klidnějšího vývoje.<br><br>Poslední vrstvou je omezení práv databázového účtu. Aplikační účet nemá mít právo měnit strukturu, vypínat triggery ani přistupovat k tabulkám, které nepotřebuje. Když se injektáž přesto prosadí, škoda zůstane omezená. Kontrolu dělejte pravidelně, ne jednou při nasazení. Práva se v čase rozšiřují a zapomenuté granty zůstávají. Bezpečnost není jednorázové nastavení, ale rutina, která přežije i vaše další vydání.<br><br>Asynchronní kód je místo, kde se čistota láme nejčastěji. Místo řetězení .then() a .catch() používejte async/await a obalte volání do try/catch. Nikdy nezapomeňte na await u funkce, která vrací promise. Typická chyba je, že zapomenete await a pak se divíte, proč máte v proměnné promise místo dat. Stejně tak nedávejte await do cyklu for, pokud nechcete čekat postupně. Když potřebujete paralelní zpracování, použijte Promise.all.<br><br>Testování reducerů a asynchronních akcí bez integračního prostředí znamená, že pracujete pouze s čistými funkcemi a nástroji, které nepotřebují běžící aplikaci ani síť. Redux reducery jsou ideální kandidáti: jde o čisté funkce, které dostanou stav a akci a vrátí nový stav. Žádné vedlejší efekty, žádné volání API. Pokud tedy testujete reducer, nepotřebujete žádný prohlížeč, stačí testovací runner a hluboká znalost výchozího stavu.<br><br>Pro síťové volání použijte stub nebo mock. Nahraďte funkci, která volá API, za jednoduchou funkci, která vrací Promise.resolve s předpřipravenými daty. Stejně tak otestujte chybovou větev: Promise.reject s chybou. Po zavolání async akce počkejte na dokončení Promise. To je místo, kde lidé chybují nejčastěji: zapomenou na await nebo na vrácení Promise z testu. Testovací runner pak skončí dřív, než se akce dokončí, a vy dostanete falešně pozitivní výsledek.<br><br>Rozhodnutí psát aplikace pro Android vypadá jednoduše, dokud neotevřete první projekt. Najednou stojíte před desítkami souborů, konfigurací a pojmů, které spolu zdánlivě nesouvisí. První týden proto věnujte pochopení základní architektury, ne hromadění hotových řešení. Nainstalujte si vývojové prostředí určené přímo pro Android, ne obecný editor s doinstalovaným pluginem. Tím získáte simulátor, správce závislostí i nástroje pro ladění v jednom celku. Vyberte jazyk, který je pro platformu oficiální a dlouhodobě podporovaný, a držte se ho alespoň první tři měsíce. Přeskakování mezi dvěma jazyky na začátku jen zpomalí učení.<br><br>Začni názvy. Proměnná data, temp nebo x neříká nic. Místo d napiš datumObjednavky, místo arr klidně seznamKurzu. U funkcí používej sloveso: spocitejCenu(), nactiUzivatele(). Pokud název potřebuje komentář, je pravděpodobně špatný. Boolean pojmenuj jako tvrzení: jePrihlasen, maOpravneni, ne flag.<br><br>Migrace z MySQL do PostgreSQL není jen převod typů sloupců. Rozdíly v chování serveru se projeví až v provozu: jinak se chovají transakce, jinak řazení textu, jinak výchozí hodnoty. Pokud začnete přepisem schématu bez přípravy, narazíte na chyby, které se v MySQL nikdy neobjevily. Nejprve si udělejte inventuru: které tabulky jsou kritické, kde se používají uložené procedury, triggery a kde aplikace spoléhá na nestandardní chování MySQL.
Summary:
Please note that all contributions to Madagascar are considered to be released under the GNU Free Documentation License 1.3 or later (see
My wiki: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
English
Not logged in
Talk
Contributions
Create account
Log in
Namespaces
Page
Discussion
English
Views
Read
Edit
View history
More
Search
Getting Madagascar
download
Installation
GitHub repository
SEGTeX
Introduction
Package overview
Tutorial
Hands-on tour
Reproducible documents
Hall of Fame
User Documentation
List of programs
Common programs
Popular programs
The RSF file format
Reproducibility with SCons
Developer documentation
Adding programs
Contributing programs
API demo: clipping data
API demo: explicit finite differences
Community
Conferences
User mailing list
Developer mailing list
GitHub organization
LinkedIn group
Development blog
Twitter
Slack
Tools
What links here
Related changes
Special pages
Page information