Když vybíráte open source licenci, rozhodujte podle dalšího použití

From IT-Core
Jump to navigation Jump to search


Nakonec si zvykněte na verze iOS. Když vyvíjíte pro iOS, musíte si vybrat, kterou minimální verzi podporovat. Starší verze mají své limity, ale nové mají nejlepší funkce. Kompromis je zvolit verzi, která pokrývá většinu uživatelů, a v kódu použít podmínky jako if #available(iOS 17.0, *) pro nové API. Tím se vyhnete nutnosti psát dvě verze aplikace. A pamatujte, že simulátor není totéž co skutečné zařízení. Některé věci, jako je výkon a odezva, se liší, takže si aplikaci vždy vyzkoušejte na fyzickém iPhonu, abyste viděli, jak se chová v reálném provozu.

Důležité je také myslet na to, jak konfiguraci tým spouští. Pokud musí každý člen něco instalovat nebo ručně nastavovat, konfigurace selže. Ideální je, aby se vše spouštělo jediným příkazem, který si každý vytáhne z repozitáře – ať už jde o instalaci závislostí, spuštění testů nebo generování výstupů. Tady často vzniká problém s verzemi: pokud si každý nainstaluje nástroj sám, může mít jinou verzi, a výsledky se pak liší. Řešením je definovat přesné verze přímo v konfiguraci, případně použít nástroj, který je umí zamknout.

Další podstatné rozhodnutí se týká toho, zda chcete kontrolovat, jak jsou vaše jméno a jméno vašeho projektu používány. Většina licencí obsahuje klauzuli o zřeknutí se odpovědnosti, ale ne všechny zakazují reklamní použití jména autora. Pokud vám vadí, že by někdo použil váš projekt jako součást své marketingové kampaně, vyberte licenci, která to výslovně omezuje. Třeba BSD licence má variantu, která zároveň zakazuje použít jména přispěvatelů k propagaci odvozených děl. To je praktické, ale zároveň to zvyšuje počet povinností, které musíte při distribuci splnit.
Typická chyba začátečníků je ukládání všeho do store, i věcí, které jsou čistě lokální, jako hodnota inputu v formuláři. To způsobuje, že se při každém stisku klávesy posílá akce, prochází přes reducery a celý store se aktualizuje. Místo toho si nechte lokální stav v komponentě pomocí useState a do Reduxu posílejte až hodnotu při odeslání formuláře. Stejně tak nemá smysl ukládat data, která se dají snadno dopočítat z jiných částí store – to je duplikace a vede k nekonzistenci.

SwiftUI je deklarativní framework, který mění způsob, jakým přemýšlíte o uživatelském rozhraní. Místo nastavování vlastností pohledů krok za krokem popisujete, co má být na obrazovce, a systém se stará o zbytek. Typická chyba začátečníků je snaha používat UIKit zvyky, jako je manipulace s frame a autolayout. V SwiftUI se místo toho spoléháte na modifikátory jako .padding(), .frame() a .background(). Tyto modifikátory se řetězí a každý vrací nový pohled, takže pořadí je důležité. Pokud chcete, aby se prvky správně zarovnaly, používejte ZStack, HStack a VStack, a nezapomeňte na Spacer.

Pro asynchronní operace, jako je načítání dat z API, nepoužívejte samotný Redux – ten je synchronní. Použijte middleware jako Redux Thunk nebo Redux Saga. Thunk je jednodušší a vhodný pro většinu případů: umožní vám posílat akce až po dokončení asynchronní operace. S ním můžete v akci vytvořit funkci, která dostane dispatch a getState. Příklad: dispatch(fetchUser(id)) – vevnitř funkce zavoláte API a pak odešlete akci s daty. Pozor ale na to, abyste v thunku nemíchali příliš mnoho logiky – měl by jen řídit tok akcí, ne počítat data.

Další oblast, kde dělají začátečníci chyby, je práce s asynchronními úlohami. SwiftUI má moderní přístup přes async/await, ale pokud přicházíte z jiného jazyka, může být lákavé použít DispatchQueue a uzavřenosti. To funguje, ale vede k nečitelnému kódu a potenciálním problémům s hlavním vláknem. Místo toho deklarujte funkci jako async a použijte await pro volání, která potřebují čas. Pokud potřebujete aktualizovat UI po návratu z asynchronní operace, vraťte se na hlavní vlákno pomocí MainActor. Tím se vyhnete zásekům a zajistíte, že se rozhraní aktualizuje plynule.

Pro výběr dat ze store nepoužívejte přímý přístup k němu v komponentách. Místo toho vytvořte selektory – funkce, které z celého stavu vyberou jen to, co potřebujete. Selektory můžete memoizovat pomocí knihovny Reselect, což zabrání zbytečnému přepočítávání při každém renderu. To je důležité hlavně u velkých seznamů nebo filtrovaných dat. Příklad: const selectVisibleTodos = (state) => state.todos.filter(...). Pokud použijete memoizovanou verzi, úložné prostory v malém bytěýsledek se spočítá jen když se změní vstupní data, ne při každém renderu komponenty.

Jak předejít tomu, aby se konfigurace stala jen mrtvým dokumentem Základní chybou bývá nastavit konfiguraci najednou, bez ohledu nábytek na míru to, jak tým reálně pracuje. Než začnete cokoli sjednocovat, zjistěte, kde jsou skutečné rozdíly: porovnejte lokální nastavení každého člena, podívejte se, jaké verze nástrojů používají, a zjistěte, Rekonstrukce Bytu které skripty spouštějí denně. Teprve poté vytvořte konfiguraci, která tyto reálné potřeby pokrývá – ne tu, kterou vám dodá šablona z internetu. Prakticky to znamená začít s malým pilotním projektem, kde konfiguraci otestujete naživo, If you loved this posting and you would like to acquire additional information regarding více o tom kindly go to our web-page. a teprve poté ji rozšíříte na celý tým.