Göm menyn

TDP005 Projekt: Objektorienterat system

Kodgranskning

Som ett moment i kursen ingår kodgranskning, och att kunna organisera ett kodgranskningsmöte.

Ni ska i grupper om 2-3 projektgrupper ha ett möte där ni går igenom varandras kod. Detta möte ska ske en bit in i projektet när ni påbörjat er kodning, men helst innan all kod är klar. Det kan lämpligtvis ske vid det för ändamålet schemalagda tillfället (se "Schema"), då handledare finns tillgängliga. Men det går bra för er inom kodgranskningsgrupperna att komma överens om ett annat tillfälle. Om grupperna är i ofas går det även bra att ha mer än ett kodgranskningsmöte, så att ni granskar olika gruppers kod vid olika tillfällen.

Det här är ett gyllene tillfälle att få feedback på er kod och öva att läsa och förstå andras kod. Tänk på att göra en noggrann bedömning av den kod ni granskar och ta inte illa vid er från den granskning ni får på er kod; tänk på att alla förbättringar ni kan göra ger er ett bättre utgångsläge inför bedömningen som görs för betygsättning. Håll också ögonen öppna efter bra ideer och upplägg i koden ni granskar som ni kan använda er av i er egen kod!

Varje projektgrupp ska skriva en egen rapport om kodgranskningen.

  • Deadline: Se "Schema" i menyn.
  • Fokus för granskningen:
    • Utgå ifrån systemspecifikationen för projektet ni granskar och se vilka delar av designspecifikationen som har implementerats, och om designen har ändrats.
    • Om designen har ändrats, fundera på varför ändringarna har gjorts, och om de bidrar till en bättre design än den som beskrivs i systemdokumentationen.
    • Finns det delar i koden som kan strukutreras på ett annat sätt för att bli enklare att förstå, eller för att göra koden effektivare?
    • Fundera på hur objektorientering, arv och polymorfi används i projektet. Föreslå ställen där objektorienteringen kan förbättras och hur det kan göras. Fundera specifikt på:
      • Har varje klass en tydlig och avgränsad uppgift?
      • Är uppgiften lagom stor?
      • Är antalet beroenden mellan olika klasser stort? Kan beroendena minskas på något sätt?
      • Är designen flexibel? Hur mycket arbete skulle det vara att lägga till exempelvis ett nytt objekt i form av en fiende eller en powerup? Går det att strukturera om koden så att det blir enklare att lägga till saker?
    • Relatera gärna också till följande aspekter i Code Complete:
      • Klassdesign (Code Complete, kapitel 6)
      • Variabler, speciellt ur ett OO-perspektiv (Code Complete, kapitel 10-13)
      • Satser (Code Complete, kapitel 14-19)
      (Dessa kategorier finns närmare beskrivna i Code Complete, en bok ni kan finna i biblioteket om ni inte redan äger den.)
    • Täck även andra aspekter som dyker upp, exempelvis saker från bedömningskriterierna under "Projektbeskrivning" i vänstermenyn.
    • Glöm inte att ge både positiv feedback på sådant som är bra, som konstruktiv feedback på sådant som kan förbättras. Försök ge kritik som kan hjälpa den andra gruppen att förbättra sin kod!
  • Innehåll:
    • Kort redogörelse för hur kodgranskningsmötet gick till, samt när det hölls.
    • En beskrivning av er granskning av de andra gruppernas kod. Fokusera gärna på de punkterna ni anser är viktigast, och ge en mer översiktlig beskrivning av övrigt.
    • Beskriv vilken feedback ni fått av de andra grupperna, och vilka konskvenser det fått för er fortsatta utveckling.
  • Lagom omfattning på er rapport är kring 2-3 sidor. Tänk på att kvalitet är viktigare än kvantitet!

Exempel

Notera: Fokus för kodgranskningen har ändrats något sedan tidigare år! Tidigare var det stort fokus på checklistan under Projektbeskrivning. Numera ligger större fokus på den objektorienterade designen i stället. De punkter som tas upp i exemplen är därför inte alltid relevanta för i år, men strukturen fungerar fortfarande!

Kodgranskningsgrupper

I tabellen nedan ser ni vilken grupp ni ska granska och bli granskad av. Exempelvis granskar grupp A2 grupp A3 och vice versa.


Sidansvarig: Filip Strömbäck
Senast uppdaterad: 2018-11-14