Code Review - Niet alleen de Code!

Het doen van een code review is best wel een arbeidsintensieve klus, zeker als je het goed wilt doen. Binnen 42 doen we deze als een project een aantal weken onderweg is, vooral vanuit het oogpunt van kwaliteitsborging. We gebruiken Crucible van Atlassian wat het heel makkelijk maakt om stukken code van commentaar te voorzien. Echter, het is dan verleidelijk om je dan alleen op de code te concentreren en het grote plaatje buiten beschouwing te laten. Voor je het weet ben je afgedaald tot het niveau van checkstyle of findbugs en waar hadden we die tools nu ook al weer voor.

Er is meer dan de code. Zo is er bijvoorbeeld de:



Instant Developer Experience - waarbij ik kijk of het project eenvoudig uit de source code repository is te halen en met een enkelvoudige instructie te compileren, te testen of uit te voeren valt. Waarom is dit belangrijk? Het komt regelmatig voor dat een nieuwe medewerker verder moet op een bestaand project en als deze dan eerst een dag bezig is om het project draaiende te krijgen is dat verloren tijd. Gelukkig gebruiken we binnen 42 Maven en is dit voor ons (meestal) een eitje.



Een tweede interessante bron van informatie zijn de offertes en andere klant gerelateerde documenten. Zo kwam ik er bijvoorbeeld laatst achter dat we in een offerte voor een fixed price maatwerk webapplicatie afhadden gesproken om Internet Explorer 6 niet te ondersteunen. Wat schetst mijn verbazing? Ik vind in het project hele stukken javascript en css voor het ondersteunen hiervan. De ontwikkelaars waren er van uitgegaan dat dit noodzakelijk was. Door op tijd de review te doen hebben we ons een hoop onnodige inspanning bespaard.



Als laatste punt is een blik op de structuur van de applicatie interessant. In Java zitten de meeste web applicaties voorspelbaar in elkaar. Je hebt de voorkant waarin de gebruikersinterface zit, een servicelaag die het mogelijk maakt vanuit de gebruikersinterface operaties uit te voeren op het domein model. Het domein model bevat de eigenlijke applicatie logica, welke dan via de data access laag opgeslagen kan worden in de database. Soms kom je applicaties tegen die hiervan afwijken. Dat is het moment om de waarom vraag te stellen!