Urnik 09.00 – 10.30 varno programiranje 10.30 – 11.00 odmor 11.00 – 12.30 napredno razhroščevanje Cilj: v prvem delu vsakomur dati vsaj eno dobro idejo, v drugem delu vsakemu pokazati vsaj nekaj novega.
Varno programiranje
Varno programiranje Razumljiva koda Kvalitetna koda Kratke metode, jasen namen, (samo)dokumentiranost, lokalnost podatkov, dobra imena Kvalitetna koda DRY, SOLID Preverjanje rezultatov (sistemskih funkcij) Misel na prihodnost („future-proofing“) Design by Contract
Slaba koda Dobra koda
Preglednost Pomožne spremenljivke Enumeratorji Orodja za refaktorizacijo Enumeratorji
Preverjanje vhodnih podatkov Statične shrambe podatkov Statična polja GetMem Move
Enumerirani tipi Case <enum> … else If <num> … else For … Low() to High()
Preverjanje rezultatov funkcij Sistemski klici!
Ustvari/uniči Create/Destroy GetMem/FreeMem Lock/Unlock Acquire/Release Try/finally
Izjeme Sporočanje izjemnih primerov Sporočanje pričakovanega rezultata Ni očitno, katere izjeme lahko pričakujemo try … except end On Error Resume Next
Exception Loggers EurekaLog madExcept JclDebug
Design by Contract Preconditions Postconditions Invariante Testiramo na začetku metode Postconditions Testiramo na koncu metode Invariante Assert / raise
Pozor, nevarnost! Goto With
Metodologije DRY SOLID Don‘t Repeat Yourself Single responsibility principle Open/closed principle Liskov substitution principle Interface segregation principle Dependency inversion principle
Statična analiza FixInsight
Napredno razhroščevanje
Nastavitve Project, Options Tools, Options Delphi Compiler, Compiling Optimization Stack frames Debug information Use debug .dcu‘s Tools, Options Debugger Options General Event log
Lastnosti prekinitev Enabled Condition Pass count Thread
Stranski učinki Izpis informacij Izpis sklada izvajanja
Skupine prekinitev Vklop/izklop Ročno Kot stranski učinek
Izjeme Lokalno Globalno Stranski učinek prekinitev Tools, Options Debugger Options, Embarcadero Debuggers, Language Exceptions
Strojno podprte prekinitve Naslovne Izvajanje vrstice Podatkovne Zapisovanje podatkov Omejeno število Onemogočene ob vsakem začetku
Majhni triki Premikanje točke izvajanja Prekinitve na skladu izvajanja Vrnitev iz metode
Prikaz podatkov Oblikovanje v oknu Evaluate/Modify Organiziranje v skupine
Optimizator je lahko v napoto DontOptimize
Vprašanja?