Správný návrh metody
- uplatním princip vysoké soudržnosti
- metoda má právě jednu přesně definovanou zodpovědnost
- pojmenování: srozumitelné a samo-popisné (vyvarovat se And nebo Or v názvu)
- čím delší, tím větší chybovost
- max. 100 - 200 řádků
- v metodě volám jenom metody objektů (sebe, které vlastním, které vytvářím, které dostanu jako parametr)
DRY - do not repeat yourself
- kód - zapouzdření funkčnosti do metody a použití na více místech
- data - správný návrh ukládání dat
- používání pojmenovaných konstant - nemít číselné hodnoty v kódu
- ! neznamená to zrušit Copy + Paste - někdy stejné části kódu spolu logicky nesouvisí
- všude, kde se očekávají změny nebo rozšíření
- rozhraní, které zveřejním (a už ho nějaké objekty používají) bych neměl měnit
- můžu samozřejmě přidat další metody či měnit implementaci stávajících
Dědičnost
- něměli bychom používat dědičnost jen proto, že 2 třídy mají společnou možinu atributů
- měl by platit Liskov substitution principle:
- pokud instanci rodiče nahradíme instancí potomka, tak pak by kód, který očekává instance rodiče měl fungovat i s instancí potomka
- to platí např. pro stejné parametry a výstupní hodnoty
- např. potomek by neměl v overriden metodě vyžadovat striktnější pravidla pro parametry (pak to se zavoláním kódu, který očekává rodiče, spadne)
- dědičnost je velmi silná vazba
- vícenásobná dědičnost často porušuje princip vysoké soudržnosti
Štábní kultura psaní kódu
- pojmenovávání, srozumitelnost
- komentáře, odsazování
- dodržování daných konvencí psaní kódu (pro konkrétní programovací jazyk)
Správný návrh > efektivita
- samozřejmě do jisté míry, ale není dobré to rvát na efektivitu - pak to bude sice o něco rychlejší, ale nepřehledné a špatně rozšiřitelné
Maximalizovat znovupoužití existujícího kódu
Konfigurace do externích souborů
- pro usnadnění procesu nasazení v různých prostředích
Popisy v GUI do externích souborů
- pak mohu přidat lokalizaci
Ošetřování
- nevalidních vstupů (ze souborů, od uživatele, z externího API)
- před chybami ostatních programátorů (tj. i když je to metoda pro vnitřní použití, tak by měla být ošetřená)
- vracení správných chybových kódů
- vyvolávání a chytání výjimek
- správné ukončení programu
Logování
- rozdělení podle úrovní/priorit, pěkné formátování + uložení na určité místo
- DEBUG, INFO, WARN, ERROR, FATAL, apod.