NMIN102: Problémy zápočtových úloh

Problémy zadání

Nezáživné téma
řešitel si vybral téma, které mu přišlo jako relativně snadná cesta, ale nebaví ho => je moc těžké se přemluvit se úloze věnovat
zatnout zuby a pracovat; často se stává, že se odkládá, odkládá, ... a nestihne.
Moc těžké téma
velké oči, přecenění vlastních sil; nedaří se to uvíst do alespoň trošku uznatelného stavu
určitě je dobré kontaktovat cvičícího co nejdříve a poradit se.

Dělení na části

V ZS velmi populární problém.
opakování téhož nebo téměř téhož na více místech
lákadla: copy-paste je snadné, rychle to přibývá
úskalí: chyby se pak musí opravovat na mnoha místech, kód zbytečně dlouhý
náprava: měli bychom to zkusit zformulovat lépe (a udělat nějaký hezký podprogram)
všechno nebo skoro všechno v globálních proměnných
u velmi krátkých programů to nemusí vadit, u rozsáhlejších velmi populární způsob, jak ztratit přehled, co kde mám a jak mi to funguje
náprava: důsledné používání lokálních proměnných na lokální využití (iterátory, pomocné proměnné); předávání výsledků do a z podprogramů pomocí vhodně pojmenovaných parametrů (a nezapomenout je podprogramem otestovat)

Přílišný optimismus

Někdy je programátor příliš velkým optimistou - ať již vlastní povahou, ale také opomenutím, či leností. Nešťastná očekávání:
uživatel dělá jen to, co má
člověk je omylný - i uživatel může neúmyslně udělat chybu (a což teprve, když si chce vyzkoušet, jak se to zachová, když ... )
program by neměl spadnout, měl by na problém reagovat (v krajním případě ohlášením chyby a korektním ukončením sebe sama)
Udělá-li uživatel chybu, musí se dozvědět, co udělal špatně a měl by se i dozvědět, co se po něm vlastně chce.
programátor chyby nedělá
ale dělá, a často ...
Je vhodné na vybraná místa vložit kontroly, zda data odpovídají požadavkům/předpokladům
takovými místy jsou například přechody mezi fázemi programu, předávaní dat mezi podprogramy

Kódování

dlouhá identifikátory nejsou k ničemu, jen zabírají místo a musí se psát
ale také při správném použití jasně říkají, co znamenají. A to je po delší pauze dosti důležité
komentáře jsou k ničemu
komentáře umožňují zaznament myšlenky a předpoklady
určitě je dobré komentovat každé místo, kde si programátor myslí, že se mu to povedlo (ti druzí nemusí tak snadno poznat, v čem to kouzlo je)
ke každému podprogramu je dobré napsat, k čemu je a co přesně dělají jeho parametry (pokud to není jasné z jejich názvů), i jaké má vedlejší efekty, případně i kdo jej napsal, případně měnil (vždy i kdy a jak), pokud to není autor celého textu

Co dokumentovat

Ač se to zdá podivné (člověk by mohl říci, že popíše až hotové řešení), dokumentování začíná hned na začátku: vyplati se zapsat si přesné zadání, poznámky, co u toho padly, i to, proč jsme si téma vybrali.

Zpravidla uvažujeme o různých přístupech k řešení. I ty bychom si měli zapsat. A také to, na základě čeho jsme mezi nimi vybírali a jak jsme si vybrali a proč.

Závěr

Když se nedaří a nepomůže se na to vyspat, je dobré se pokusit to někomu vysvětlit (třeba kamarádovi) nebo se poradit (třeba s cvičícím).