Kodkvalitet
Daniel Toll
Daniel Toll
Intressen
Spel och Simuleringar
Mjukvara förändras (eller dör...)
Omgivningen ändras.
Diskussionsfråga
Vilka faktorer styr er kod?
Under de senaste 12-24 månaderna vilka saker bidrar mest till att er kod förändrats?
Vilka delar har varit helt stabila? Varför?
Förändring leder till...
Kod och design eroderar
Förlorar information
&
Lämnar rester
&
“Architectural drift”
Ser ej problemet (innan det är mitt)
Lagra information
Information går förlorad
≈
Vid testning
Feedback
Programmerare behöver enkel och relevant information.
?
Idealet:
Verkligheten:
Vad gör koden?
Behövs kommentaren?
Diskussionsfråga
Vilka möjligheter har vi att lagra information i kod?
Vilken typ av information saknar du oftast?
Går all information att lagra?
Implicita begränsningar
Ledtrådar.
Nackdelar: tolkningsbara och inte tvingande.
Identifierare
800K variabler från 56K java projekt
~30% variabelnamn är BARA typinformation. Ex View view, String string
(~6.5% av de primitiva datatyperna, ~50% av variabelinstanserna)
Identifierare
Lagrar information om typ(view), roll/relation(child), multiplicitet(names[]), scope(myName), datainnehåll(vertexset), dataursprung(cmdLine), datatransformeringar(salted), enhet(feet), subtyp(int index), beräknat värde(sum) ...
Painted types
String fileName = “dragonfire.png”;
float radius = 1.0f;
...
void draw(float size) {...
Kommentarer
En begränsad undersökning av kommentarer i Java
40% av undersökta kommentarer gav ingen extra information…
Ex @param String fileName, the file name
Linux, FreeBSD, and OpenSolaris
23.1-29.7% av (Linux, FreeBSD, and OpenSolaris) är kommentarer
22.1% förklarar integers
16.8% dataflöde, kontrollflöde och förklaringar av beroenden
10.7% kan utryckas med “annotation languages”
Listening to programmers Taxonomies and characteristics of comments in operating system code
http://dl.acm.org/citation.cfm?id=1555048
Begränsa lösningsrymden
Explicita begränsningar
Explicita begränsningar
Exempel JUnit
Korrekt, Lokaliserad, Lagom, Prioriterad, Läsbar, Samlad, Tillräcklig, Rekonstruerbar, Spårbar.
När får vi informationen?
Under testning
Under drift
kod som kan ändras
Begränsade beroenden.
Kapslar in kunskap.
Bra kod
Tack!
Daniel Toll
daniel.toll@lnu.se