190 likes | 335 Vues
Code Contracts. Gunnar Peipman ASP/ASP.NET MVP. Päevakava. Mis on koodilepe ? Koodilepete kasutamine Koodilepped ja dokumentatsioon Koodilepped ja automaattestid Liideste lepped Küsimused ja vastused. Mis on koodilepe. Mis on koodilepe.
E N D
Code Contracts Gunnar PeipmanASP/ASP.NET MVP
Päevakava • Mis on koodilepe? • Koodilepetekasutamine • Koodileppedjadokumentatsioon • Koodileppedjaautomaattestid • Liidestelepped • Küsimusedjavastused
Mis on koodilepe • Koodilepped on keelestsõltumatuviiskirjeldadakooditöötamiseeeldusi .NET keeltes • Koodilepete eesmärgiks on tõhustada koodi testimist koodi töötamise ajal ja kompileerimise eel ning võimaldada koodi paremat dokumenteerimist.
Töövahendid • Code Contracts Standard • Kõik VS versioonid peale Expressi • Binary rewriter, stand-alone library, reference assemblyte loomine • Code Contracts Premium • VS Premium või Ultimate • Kõik Standardi võimalused • Staatiline koodi kontrollimine
Koodilepete tüübid • Pre-condition – eeltingimused, kontrollitakse sisendeid • Post-condition – järeltingimused, kontrollitakse tagastatavat väärtust • Assertion – kohapealne kontroll • Assumption – staatilise leppe eeldus • Object invariant – alati kontrollitav tingimus, mis peab olema täidetud
Lepete kontrollimine • Static • Kontrollitakse kompileerimisel • Leppeid ei sisaldu kompileeritud koodis • Koodilepete rikkumine runtimes lubatud • Runtime • Koodilepped kompileeritakse koodi • Kontrollitakse jooksvalt
Demo Koodilepped ja nende kasutamine
Dokumenteerimine • Koodilepped saab lisada Visual Studio koodi dokumentatsiooni • Lepped lisatakse peale kompileerimist, algsed failid säilitatakse • Töövahendid: • Sandcastle • Sandcastle Help File Builder
Demo Koodi dokumentatsiooni genereerimine
Testimine Koodilepped ja ühiktestid
Koodilepped ja testid • Koodilepped ja testid pole teineteist välistavad • Koodilepped ja testid on erinevad: • Koodilepped on osa koodist • Koodilepped on osa igast paigaldusest • Teste ei paigaldata kõikidesse keskkondadesse • Testima peab ka koodileppeid
Demo Lepetega koodi testimine
Liideste lepped • Koodileppeid saab liideste kaudu jõustada klassidele • Probleem: liidestel puudub keha • Lahendus: lepete klassid ja vastavad atribuudid • Võimaldab luua üldiseid ärireeglite kogumikke
Demo Liideste lepped
Demo Koodilepped ja pärilus