Code Review

Code review is het systematisch onderzoeken (ook wel aangeduid als onderlinge code toetsing) van de Computer broncode. Het algemene doel van code review is het vinden van eventuele problemen die tijdens de ontwikkelfase over het hoofd zijn gezien.

Dit om de consistentie van broncode gedurende het ontwikkeltraject te waarborgen. Zowel de algehele kwaliteit van de software als de vaardigheden van de ontwikkelaars worden hierdoor verbeterd.

HOE WERKT CODE REVIEW?

Het proces wordt, in elk geval, door onderstaande rollen behandeld.
  • De schrijver is verantwoordelijk voor het (her)schrijven van de beoordeelde code.
  • Het onderzoeken van de code is de taak van de beoordelaar. De beoordelaar is ook verantwoordelijk voor het rapporteren van de feedback aan de schrijver, zowel positieve als negatieve punten.

Wanneer de ontwikkelaar klaar is met het werken aan een oplossing, bekijkt de beoordelaar de code en worden de volgende vragen beantwoord:

  • Zijn er voor de hand liggende fouten in de code te vinden?
  • Zijn alle technische eisen geïmplementeerd?
  • Voldoet de nieuwe code aan de bestaande stijlrichtlijnen en coderingsnormen?
  • Is het mogelijk dat de nieuwe code prestatie- of beveiligingsproblemen voortbrengt?
  • Zijn de geautomatiseerde tests voldoende voor de nieuwe code? Moeten bestaande tests worden herschreven om de gewijzigde code te testen?

BELANGRIJKSTE VOORDELEN

Elk softwareproject is uniek en heeft zijn eigen bijzonderheden. Daardoor is het lastig een lijst met voordelen te bepalen die op alle projecten van toepassing zijn. Indien we de meest voorkomende voordelen benoemen, komen we tot onderstaande lijst.

➔ Problemen in de code worden direct gedetecteerd en gecorrigeerd;

➔ Elk lid van het team, niet alleen de schrijver van de code, is verantwoordelijk voor de kwaliteit ervan;

➔ Het delen van kennis gebeurt in deze situatie veel sneller en effectiever;

➔ Alle ontwikkelaars weten niet alleen hun eigen code, maar ook de code van het hele project;

➔ De code van een nieuwe ontwikkelaar aan het project vormt geen bedreiging voor de totale kwaliteit van de code.

TOOLS

In de afgelopen jaren merken wij dat softwareontwikkeling mét team code reviews steeds meer ‘het nieuwe standaard’ wordt voor het integreren van veranderingen. Bij zowel ontwikkeling op colocatie als gedistribueerde ontwikkeling. We noemen dit ook pull request en is niet de enige methode. Er zijn een groot aantal gespecialiseerde tools die voor dit proces bruikbaar zijn.


Pull request tools:

  • GitLab: Gebruik merge requests als een hulpmiddel voor code review.
  • Github: Git hosting en pionier van de pull request
  • BitBucket: Dit platform biedt het team één plek waar ze alle projecten plannen, samen werken aan de code, tests uitvoeren en implementeren.
Gespecialiseerde tools:
  • Azure DevOps biedt een breed scala aan functionaliteiten, waaronder requirementbeheer, planning, codebeheer via git, testbeheer, pipelines bouwen en vrijgeven.
  • Crucible Atlassians code review-tool.
  • Collaborator Peer code review en document review van SmartBear.
  • Upsource JetBrains on-premise git, mercurial, perforce, svn code review tool.
  • Phabricator Open source git, mercurial, svn code review tool van Facebook

WAAROM CODE REVIEW IMPLEMENTEREN?

Hoewel er genoeg tools bestaan voor het automatiseren van de kwaliteitsbewaking (bijvoorbeeld codeanalyse, testen, metrics voor softwarekwaliteit, impactanalyse), gaan de meeste ontwikkelaars verder dan alleen testen en integratie. Elk team kan profiteren van codebeoordelingen, ongeacht de ontwikkelingsmethoden. Agile teams kunnen grote voordelen realiseren, omdat het werk in het hele team wordt gedecentraliseerd. Niemand is verantwoordelijk voor een specifiek deel van de code, iedereen is er mee bezig. Kort gezegd helpen code reviews het delen van kennis over de codebasis voor het hele team.

CODE REVIEWS VRAGEN TIJD!

Natuurlijk, het kost tijd. Maar die tijd wordt niet verspild - verre van dat. Als het goed is gedaan, bespaart de code-reviewing daadwerkelijk tijd op de lange termijn.

5 tips voor het optimaliseren van het proces:

1. Maak gebruik van code review tools
De beste manier om te zorgen dat defecten worden verholpen, is door gebruik te maken van een beoordelingstool waarmee beoordelaars fouten kunnen melden. De fouten die deze tool aangeeft kan met schrijven worden besproken en goedkeuring krijgen voor veranderingen.

2. Onze hersenen kunnen niet alles tegelijkertijd verwerken; buiten 400 LOC neemt het vermogen om gebreken te vinden af.

3. Kies de juiste mensen
Probeer niet teveel mensen aan te wijzen als beoordelaars. Het aantal aantal gevonden bugs zal hierdoor verminderen.

4. Het bijhouden van de veranderingen
Annotaties begeleiden de beoordelaars door de wijzigingen in de code. Het laat zien wat belangrijk is en verdedigen de reden achter elke codewijziging.

5. Automatiseer
Als een computer een verkeerde code kan opmerken en veranderen, laat de computer het dan doen. Het beargumenteren van spaties versus tabbladen kost tijd en is onnodig om daar menselijke tijd mee te verspillen. Code Analysis Tools, Code Quality Checkers en Code Linters helpen bij het automatiseringsproces.

MENSELIJK MAKEN VAN CODE REVIEWS

Bij het herzien van code moet men begrijpen waarom bepaalde wijzigingen noodzakelijk zijn (lost een bug op, verbetert de gebruikerservaring, herstructureren

van de code).

  • Communiceer over welke ideeën goed voelen en welke niet.
  • Stel goede vragen; stel geen eisen. ("Wat vindt u van het benoemen van deze user_id?")
  • Identificeer manieren om de code te vereenvoudigen, terwijl u het probleem nog steeds oplost.
  • Vraag om opheldering. ("Ik begrijp het niet. Kunt u verduidelijken?")
  • Als de discussies te filosofisch of academisch worden, verplaatst u de discussie naar een reguliere technische discussie op vrijdagmiddag. Laat de schrijver in de tussentijd de definitieve beslissing nemen over alternatieve implementaties.
  • Alternatieve implementaties aanbieden ("Wat vindt u van het gebruik van een aangepaste validator hier?").
  • Probeer het perspectief van de schrijver te begrijpen.
  • Probeer geen hyperbolische woorden te gebruiken ("altijd", "nooit", "eindeloos", "niets").
  • Meld u af bij het pull-verzoek met een "duimpje omhoog" of "Gereed om samen te voegen" commentaar.

CONCLUSIE

Wij zijn mensen; er is niets mis met het maken van fouten. Echter, het vroegtijdig ontdekken van de fouten is erg belangrijk, voordat ze moeilijk te vinden en duur om te corrigeren zijn. Code review is een essentieel onderdeel voor kwalitatieve softwareontwikkeling.