Setkali jste se někdy s opravdu složitým programátorským problémem? Problém, u kterého pravděpodobně dokážete napsat logiku, ale nejste si zcela jisti syntaxí, kterou byste měli použít? Psaní pseudokódu je skvělým začátkem.
Co to je
Pseudokód je „jazyk“, ve kterém můžete napsat veškerou logiku kódování, aniž byste museli napsat jediný řádek kódu konkrétního jazyka. Často se s tím setkáte při výzkumu algoritmů, zejména algoritmů strojového učení. To ale neznamená, že ho nemůžete použít při vývoji webu.
Proč byste ho měli používat
Existují projekty, které jsou tak rozsáhlé, že pokud si neuděláte čas na napsání malého pseudokódu, můžete skončit ztraceni v moři implementovaného kódu. Když napíšete trochu pseudokódu, dáte si tak možnost skutečně promyslet potenciální problémy. Můžete se podívat na čistou logiku a tok programu, aniž byste se museli starat o to, jak váš kód běží.
Psaní pseudokódu předtím, než začnete psát skutečný kód, vám také pomůže rychleji dokončit projekty. Přemýšlejte o něm jako o plánu. Víte, kam je třeba vše umístit a jak vše dohromady funguje. Takže když se dostanete do fáze skutečného vytváření, nemusíte tolik přemýšlet, protože už máte promyšleno, co je třeba udělat.
Nejlepší na tom je, že pseudokód není závislý na žádném programovacím jazyce. Tu logiku, kterou jste právě napsali, může kdokoli převzít a přeložit do svého zvoleného jazyka. Dává vám svobodu znovu použít a vylepšit architekturu aplikace, kterou vytváříte.
Jedním z rafinovanějších způsobů využití pseudokódu je jeho sdílení s ostatními lidmi. Někdy budete mít určitý kus logiky, který lze použít ve více projektech, ale všechny jsou v různých programovacích jazycích. Když máte pseudokód k dispozici, můžete jej předat ostatním programátorům a oni mohou tuto logiku napsat v jakémkoli jazyce, který potřebují.
Další skvělou vlastností je, že pseudokód můžete psát v libovolném formátu. Můžete použít akademický formát. Je neuvěřitelně strukturovaný a podrobný, ale bývá v něm hodně matematiky. Nebo můžete napsat jednoduchý nástin toho, co očekáváte, že váš kód udělá.
Jak ho napsat
Tady je příklad pseudokódu, který jsem napsal v jedné ze svých akademických prací:
Budu první, kdo přizná, že pro vývoj webu je to asi přehnané. Pokud se přistihnete, že k psaní pseudokódu používáte LaTex, možná si to komplikujete víc, než je nutné. Je velká pravděpodobnost, že vám bude stačit malý rychlý zápis ve Wordu nebo dokonce v Poznámkovém bloku.
Tady je příklad jednoduchého pseudokódu, který jsem napsal pro jeden z mých projektů vývoje webu:
IF userlogin = true API call to get user data Assign data to variables Re-route user to dashboardELSEIF userlogin failed more than 3 times Don't allow more attempts Send user notification email Re-route user to home pageELSE Log bad login attempt Show error message Clear login form
Pseudokód nemusíte zpracovávat supertechnicky, ale obvykle čím více detailů do něj nacpete, tím snadněji se vám bude psát skutečný kód. Přemýšlejte o tom, jako byste psali osnovu svého programu. Dává vám to možnost skutečně promyslet, čeho se snažíte dosáhnout, a můžete přesně vidět, jak se celý kód skládá dohromady.
Hlavní věci, na které se musíte při psaní pseudokódu zaměřit, jsou:
- Logický tok programu
- Detaily složitých částí programu
- Konzistentní formát
K psaní pseudokódu toho kromě náročného přemýšlení opravdu není potřeba mnoho. Při jeho psaní si začnete všímat míst, kam byste mohli přidat více detailů, nebo míst, kde můžete některé detaily ubrat. Nezapomeňte, že je to hlavně pro vaši potřebu, takže to pište tak, aby vám to dávalo smysl.
Osobně mám pseudokód rád. Pomáhá mi udržet si jasný tok myšlenek, když začnu psát skutečný kód. Když už máte celou logiku naplánovanou, máte mnohem více času na experimentování s výkonem a optimalizací. Navíc nemusíte tolik přemýšlet, když jste hluboko v psaní kódu (hurá pro plánovanou lenost).
Co si o tom myslíte vy? Myslíte si, že pseudokód stojí za to, abyste mu věnovali čas, nebo se raději rovnou vrhnete do psaní kódu?
Hej! Měli byste mě sledovat na Twitteru, protože důvody: https://twitter.com/FlippedCoding