Jak spolehlivě odhadovat délku softwarových projektů
Další pastí je implicitní konverze typů. Pokud máte sloupec VARCHAR a porovnáváte ho s číslem, databáze často provede konverzi na každém řádku, což opět znefunkční index. Dbejte na to, aby typy v podmínkách odpovídaly typu sloupce.
Pro každou feature větev platí zásada: měla by být krátkodobá a zaměřená na jednu konkrétní funkcionalitu. Pokud potřebujete pracovat na více nezávislých úpravách, které spolu nesouvisí, rozdělte je do samostatných větví. Vyhnete se tak situaci, kdy jedna větev obsahuje směs nesouvisejících změn a je obtížné ji reviewovat i případně vrátit zpět. Pravidelně provádějte merge z hlavní větve do své feature větve, abyste minimalizovali rozdíly a usnadnili si finální merge. Tím také včas odhalíte případné konflikty.
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.
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.
Návrh routes a práce se status kódy Při návrhu routes se držte REST konvencí. Používejte podstatná jména v množném čísle (například /users), vyhněte se slovesům a akce odvozujte od HTTP metod. GET pro čtení, POST pro vytvoření, PUT nebo PATCH pro úpravu a DELETE pro mazání. Zásadní je vracet správné HTTP status kódy – 200 pro úspěch, 201 pro vytvoření, 400 pro chybný požadavek, 404 pro nenalezený zdroj a 500 pro interní chybu. Častou chybou je vracet 200 i při chybě, což klientovi znemožní rozlišit úspěch od selhání.
Odhad času patří k nejobtížnějším částem softwarového vývoje. Přesný odhad neexistuje, ale můžete se k němu výrazně přiblížit, pokud se vyhnete nejčastějším chybám. Klíčem je rozdělit práci na malé, dobře pochopitelné celky a místo jednoho čísla uvést interval s pravděpodobností.
Klíčové funkce, které oceníte v praxi Před instalací si rozmyslete, které funkce skutečně využijete. Integrovaný terminál je užitečný, ale pokud ho nepoužíváte, jen zabírá místo. Naopak podpora pro ladicí nástroj je u složitějších chyb nenahraditelná – umožní vám procházet kód řádek po řádku a sledovat hodnoty proměnných. Důležité je také snadné nastavení virtuálního prostředí: kvalitní IDE vám umožní vytvořit nové prostředí jedním kliknutím a automaticky do něj nainstalovat závislosti z projektového souboru. Pozor na to, že některé editory mají vlastní správu balíčků, která může být v konfliktu s nástroji, které už používáte.
Nakonec si osvojte práci s vysvětlením plánu dotazu (EXPLAIN). Tento nástroj vám ukáže, jak databáze dotaz zpracovává, které indexy používá a kde dochází k sekvenčnímu procházení. Než optimalizujete, vždy se podívejte na tento výstup. Často zjistíte, že problém není v dotazu, ale v chybějícím indexu, který se tváří jako existující, ale ve skutečnosti se nepoužívá.
Vyhýbejte se také nadměrnému používání `SELECT *`. Zbytečně přenášíte data, která nepotřebujete, a to zatěžuje síť i paměť. Místo toho vypisujte jen sloupce, které skutečně používáte. U velkých textových polí (TEXT, BLOB) to může znamenat řádové zrychlení.
Důležitým kritériem je rychlost odezvy a plynulost. Některá plnohodnotná IDE se při otevírání velkých souborů nebo při indexaci projektu znatelně zpomalují. To vás může stát hodně času, zejména když pracujete s datovými soubory o desítkách megabajtů. Vyzkoušejte si proto, jak se editor chová při psaní dlouhého kódu, jak rychle nabízí doplňování a jestli se při běhu testů nezasekává. Pokud používáte starší hardware, zaměřte se na nástroje, které umožňují vypnout některé funkce, jako je analýza celého projektu nebo automatická kontrola typů.
Na závěr si dejte pozor na to, abyste si nevybrali nástroj pouze podle doporučení ostatních. Každý má jiné zvyklosti, jinou velikost projektů a jiný hardware. To, co vyhovuje kolegovi z jiného týmu, nemusí vyhovovat vám. Vytvořte si vlastní seznam kritérií, podle nějž budete hodnotit – od rychlosti spouštění až po podporu pro vzdálený vývoj. Až si projdete všechny možnosti, rozhodování bude mnohem jednodušší a výsledný nástroj vám nebude překážet v práci.