====== Doporučená literatura k napsání ročníkového projektu ====== Myslím si, že napsání Tetrisu v Pascalu není dostatečná příprava pro napsání nějakého většího kódu. Proto jsem se rozhodl na této stránce shromáždit odkazy na užitečné zdroje, které Vám pomůžou stát se lepšími programátory. ===== Užitečné zdroje ===== ==== Doporučené postupy v programování ==== * [[https://is.cuni.cz/studium/predmety/index.php?tid=&do=predmet&kod=NPRG043&fak=11320|Predmet na MFF]] * [[http://majda.cz/download/swi113-2006-2007-slajdy.html|Originální slidy Davida Majdy]] * V poznámkách je napsáno, že je to magisterský předmět, protože mladší studenti "Ještě si neprošli peklem :-)" - a tím peklem je myšlen ročníkový projekt / bakalářská práce. S tímto názorem nesouhlasím. :) * Pročtením těchto slidů (1 odpoledne) si ušetřili hodiny strávené luštěním vlastního kódu. * Slidy vychází z knížky [[http://cc2e.com/|Code Complete 2]], která má asi 1000 stránek. A kromě samotného psaní kódu se v ní řeší i manažerská část programování. * Slidy jsou velmi dobrým shrnutím a čas od času si je projdu, abych si "osvěžil", jak (a proč) bych měl psát kód. ==== Getting Real ==== * [[http://gettingreal.37signals.com/]] a [[http://gettingreal.37signals.com/toc.php|on-line verze]] * [[http://gettingreal.37signals.com/ch01_What_is_Getting_Real.php|What is Getting Real?]] * [[http://zdrojak.root.cz/clanky/agilni-vyvoj-getting-real/|Odkaz na dulezite kapitoly na zdrojáku]] * Pročtením této knížky (1 odpoledne) získáte tipy jak se rozhodovat, co/jak/kdy implementovat, a tím se vyhnout zásekům. ==== Návrhové vzory ==== * Pokud budete chtít implementovat cokoliv většího než "HelloWorld", tak se bez návrhových vzorů ("představuje obecné řešení problému, které se využívá při návrhu programů" [[http://cs.wikipedia.org/wiki/N%C3%A1vrhov%C3%BD_vzor|wiki]]. * [[http://ulita.ms.mff.cuni.cz/mff/sylaby/nprg024.html|Předmět vyučovaný na MFF]] * Opět proklikání slidů zabere 1 odpoledne. Obzvlášť důležité jsou vzory: Factory Method, Factory Method, Abstract Factory, Builder, Chain Of Responsibility, Facade, Singleton, Template Method, Visitor ==== Don't Make Me Think ==== * [[http://www.amazon.com/Dont-Make-Me-Think-Usability/dp/0321344758|Don't Make Me Think]] * Toto je jedna z knížek, která nejvíc ovlivnila můj způsob uvažování nad tím, jak by měly věci, se kterými mají pracovat lidé fungovat. V knižce je také popsáno, jak levně provádět uživatelské testování. * V úvodu je napsáno, že by se měla dát přečíst během 1 letu. Ve skutečnosti to zabere tak 2 až 3 dny. ==== Joel on Software ==== * [[http://www.joelonsoftware.com/]] * Obsahuje celou řadu výborných rad o chybách a možných zlepšeních při vývoji softwaru. * [[http://www.joelonsoftware.com/articles/fog0000000043.html|12 Steps to Better Code]] - jeden z nejdůležitejších článků a doporučuju se jím řídit. Obsahuje odkazy na detailnější články k jednotlivým kroků. ==== Akvaristická série ==== * todle není zádný oficiální název, ale říkám jim tak podle obrázku rybičky na jednotlivých knížkách * přečetl jsem si je v 18 a hodně posunuly moje vnímání toho, jak by měl vypadat/fungovat dobrý kod * [[http://www.knihy-dvd.cz/technicke_vedy/refaktoring_zlepseni_existujiciho_kodu.html|Refaktoring - Zlepšení existujícího kódu]] * [[http://www.knihy-dvd.cz/technicke_vedy/navrh_programu_pomoci_vzoru_stavebni_kameny.html|Návrh programů pomocí vzorů - Stavební kameny objektově orientovaných programů]] * [[http://www.knihy-dvd.cz/technicke_vedy/extremni_programovani.html|Extrémní programování]] * [[http://www.knihy-dvd.cz/technicke_vedy/zaklady_objektove_orientovaneho_navrhu_v_uml.html|Základy objektově orientovaného návrhu v UML]] ===== Jednotlivé části vývoje ===== * [[http://www.joelonsoftware.com/articles/fog0000000036.html|Jak napsat specifikaci]] * [[http://gettingreal.37signals.com/ch11_Theres_Nothing_Functional_about_a_Functional_Spec.php|There's Nothing Functional about a Functional Spec]] a [[http://gettingreal.37signals.com/ch11_Dont_Do_Dead_Documents.php|Don't Do Dead Documents]]