Jak zorganizovat verzování kódu při více knihovnách

From Rikkiepedia
Revision as of 17:43, 21 August 2026 by RuthieTrommler (talk | contribs) (Created page with "Při práci s externími službami, jako je stahování webových stránek, používejte knihovny `requests` a `BeautifulSoup`. Dejte si pozor na limity – mnoho webů omezuje počet požadavků, takže do skriptu vložte pauzy (např. `time.sleep()`) a respektujte soubor `robots.txt`. Automatizace by nikdy neměla narušovat fungování cizích serverů. Podobně u tabulek využijte `pandas`, ale pamatujte, že paměťová náročnost roste s velikostí dat – pro mal...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Při práci s externími službami, jako je stahování webových stránek, používejte knihovny `requests` a `BeautifulSoup`. Dejte si pozor na limity – mnoho webů omezuje počet požadavků, takže do skriptu vložte pauzy (např. `time.sleep()`) a respektujte soubor `robots.txt`. Automatizace by nikdy neměla narušovat fungování cizích serverů. Podobně u tabulek využijte `pandas`, ale pamatujte, že paměťová náročnost roste s velikostí dat – pro malé soubory stačí `csv` modul.

Verzování kódu v projektech, kde se kombinují různé verze knihoven, bývá častým zdrojem chyb. Nejde jen o to, aby se aplikace sestavila, ale aby byla reprodukovatelná a aby každý člen týmu pracoval se stejnými závislostmi. Základní pravidlo zní: určete, co je pro projekt klíčové, a to verzujte explicitně. U malých projektů postačí zamknout přesné verze, u větších systémů je nutné zavést pravidla pro aktualizace a zpětnou kompatibilitu.

Vyvarujte se také hlubokému vnořování. Pokud máte tři úrovně if-else nebo for smyček, je to signál k refaktoringu. Použijte early return: místo if (condition) { … } else { … } napište if (!condition) return; a pokračujte rovnou. Tím se snižuje mentální zátěž a kód je lineárnější. Stejně tak se vyhněte opakování – pokud se nějaká logika vyskytuje na více místech, vytáhněte ji do sdílené funkce.

Další pastí je zapomínání na okolní prostředí – skript, který běží na Windows, může selhat na Linuxu kvůli odlišným oddělovačům cest. Používejte funkce z `pathlib.Path`, které jsou multiplatformní, a testujte skript na více zařízeních, pokud to je možné. Důležité je také verzování – i jednoduchý skript uložte do Gitu, abyste se mohli vrátit k předchozí funkční verzi, když něco rozbijete. Tento návyk se vám vyplatí u všech projektů.

Konzistence je další oblast, kde se NoSQL liší. Mnoho systémů nabízí takzvanou eventuální konzistenci – po zápisu nemusí být data okamžitě viditelná pro všechny čtenáře. To je v pořádku pro sociální sítě nebo logy, ale není vhodné pro bankovní transakce, kde potřebujete přísnou konzistenci. Pokud takovou transakci musíte udělat, budete ji modelovat přes více zápisů a kompenzační operace, což je složitější než v SQL. Ptejte se, co se stane, když vypadne uzel a zápis se nepodaří dokončit.

Než začnete psát první skript, ujasněte si, co přesně chcete automatizovat. Rozdělte úkol na malé kroky: co je vstupem, co výstupem a jaké operace se mají provést. Například pokud potřebujete hromadně přejmenovat soubory, zjistěte, v jakém formátu jsou názvy, a napište jednoduchý cyklus, který projde složku a upraví názvy podle vzoru. Python k tomu nabízí moduly jako `os` a `pathlib`, které práci se soubory zjednodušují.

Jak se vyhnout častým chybám při psaní skriptů Nejčastější chybou začátečníků je tvrdé zakódování cest k souborům. Pokud použijete absolutní cestu, skript bude fungovat pouze na vašem počítači. Místo toho použijte relativní cesty nebo proměnné, které umožní skript spustit kdekoli. Druhým problémem je ignorování výjimek – soubor nemusí existovat, síť může být nedostupná, vstup nemusí odpovídat očekávání. Vždy obalte rizikové operace do bloku `try/except` a na chyby reagujte srozumitelnou hláškou.

Komentáře používejte střídmě. Dobrý kód se komentuje sám, pokud jsou názvy výstižné a logika přehledná. Komentář by měl vysvětlovat „proč", ne „co". Například „provedeme kontrolu, protože starší prohlížeče nepodporují fetch" je užitečné, ale „přičteme 1" není. Pokud zjistíte, že potřebujete komentář k objasnění složitého výrazu, raději výraz rozdělte do proměnných s názvy, které popisují jednotlivé kroky.

Na závěr si osvojte techniku logování. Místo pouhého `print()` zaznamenávejte průběh do souboru pomocí modulu `logging`. Díky tomu zjistíte, kdy a kde skript selhal, i když běží na pozadí. Automatizace je o tom, aby vám práce ubyla – pokud vám skript přináší víc starostí než užitku, vraťte se k jednoduššímu řešení. Začněte malými úkoly, postupně přidávejte složitější logiku a brzy zjistíte, že Python je mocný nástroj, který vám ušetří spoustu času.

Další pastí je verzování samotného kódu podle data, nikoliv podle sémantické verze. Pokud přidáváte nové funkce, ale zároveň měníte staré, zvyšte major verzi. Pokud jen opravujete chyby, zvyšte minor verzi. Pokud měníte jen interní detaily, zvyšte patch. Toto pravidlo musí být napsané v dokumentaci projektu a každý člen týmu ho musí dodržovat. Bez toho se rychle stane, že dvě verze knihovny mají stejné číslo, ale různé chování, což je nejhorší možný scénář.