SWI113: Dokonalý kód - Umění programování a techniky tvorby software

LS 2006/2007, seminář, 0/1 Z
každou sudou středu v 17:20, učebna S4 (začínáme 21. 2. 2007)

Cíl předmětu

Matfyz vás naučil programovat. Tento seminář vás naučí programovat dobře (nebo se o to aspoň pokusí). Ukážeme si praktické programátorské techniky, které vedou k psaní přehlednějšího, kvalitnějšího a lépe udržovatelného kódu. Vysvětlíme si, proč je používat, a předvedeme si spoustu dobrých i špatných příkladů.

Protože nikdo se ještě nenaučil dobře programovat jen posloucháním, vyzkoušíte si nabyté znalosti na několika malých úkolech.

Viz také leták na nástěnkách (PDF, 32 KB).

Slajdy

Zobrazit/stáhout slajdy (poslední aktualizace: 21.12.2008 22:08)

Slajdy jsou v XHTML a je možné je přepnout do režimu prezentace. Ve Firefoxu použijete odkaz Spustit jako prezentaci, v Opeře stačí přepnout do režimu zobrazení přes celou obrazovku. Jiné prohlížeče nejsou podporovány. Všechny obrázky a další materiály jsou vloženy přímo do XHTML souboru (jsou použity data: URL – RFC 2397), pro offline prohlížení vám tedy stačí stáhnout jen jeden soubor.

Hodnocení

Pro získání zápočtu je třeba:

  1. Mít ostře nadpoloviční účast (tj. alespoň 4 semináře).
  2. V průběhu semestru kvalitně a včas vypracovat tři malé úkoly (žádný by vám neměl zabrat víc než jeden večer) – více viz níže.

Úkoly

Datum zadáníTéma
4.4.Zpřehledňování kódu
18.4.Návrh API
9.5.Dokumentace

Úkol bude zadán vždy na příslušném semináři a jeho zadání bude následně dostupné i na této stránce. Řešení mi pošlete mailem na david@majda.cz nejpozději do dne před následujícím seminářem (včetně). Kdo nepošle úkol včas bez závažného důvodu nebo předchozí domluvy, ztrácí nárok na zápočet.

Pokud řešení úkolu nebude vyhovovat, je možné, že budu chtít přepracování. V tom případě je nejlepší vše probrat osobně na semináři následujícím po termínu odevzdání.

Úkol můžete vypracovat v libovolném rozumném programovacím jazyce. Za rozumné programovací jazyky považuju určitě Javu, C#, Ruby, Python, PHP a JavaScript. Naopak rozumný jazyk není C ani C++. U ostatních jazyků není funkce rozumnosti zatím definována a můžu ji dodefinovat na požádání.

V případě prvního a třetího úkolu dostanete v rámci zadání kód, ze kterého budete při řešení úkolu vycházet. Tento kód bude v Javě a v případě použití jiného jazyka si ho do něj musíte přepsat. Dejte si přitom pozor na korektní překlad všech syntaktických prvků a idiomů.

Osnova

  1. Design software, inherentní a zavlečená složitost.
  2. Zásady pro práci s primitivy strukturovaného programování.
  3. Design metod: pseudokód, lokálnost × duplicita kódu, data-driven programming, práce s výjimkami.
  4. Design tříd: dědičnost × kompozice, coupling a decoupling, modularizace a vrstvy abstrakce, desgin rozhraní (API).
  5. Refaktorizace. Defenzivní programování, názvové konvence a dokumentace.
  6. Testování, unit-testing, ladění.
  7. Plánování a udržovatelnost software.

Literatura