Code hygiëne, who cares?

2019-01-27

Voordat je verder leest, laten we voorop stellen dat er veel belangrijkere dingen zijn dan code hygiëne. Een tevreden product owner, een doordacht design, een goed geolied projectteam, deadlines die gehaald worden, … Als je het je kunt permitteren om je op te winden over code hygiëne, dan zit je eigenlijk al redelijk gebeiteld.

Dus als je tijd hebt om hiermee bezig te zijn – je hebt blijkbaar ook tijd voor dit artikel – lees dan rustig door.

Code hygiëne, dat is… wat?

Veel ontwikkelaars kennen alleen de tegengestelde term: code smells, stinkende software. Voorbeelden van code smells zijn:

Uitgecommentte code
Waarom doe je dat? Is dit nog belangrijk of kan het weg? Vertrouw je versiebeheer niet?

* Te lange regels
“Wat staat hier überhaupt?”

* Triviale comments
Bijvoorbeeld: “// the getName() method returns the name”

* Copy-paste-code
Typisch gevalletje luie programmeur (niet het juiste soort lui). Nu moet je een aanpassing twee keer doen.

Hier zijn typische reacties van programmeurs op code smells:

* “waarom staan daar haakjes omheen!?”

* “waar is variabele x_td2 voor?”

* “@#$%!!!”

* “what the f***”

Code smells wil je niet, dat moge duidelijk zijn. De mate waarin deze laatste wordt uitgesproken in een ontwikkelruimte, is een aardige graadmeter van de kwaliteit van software.

Code is hygiënisch als er (bijna) geen code smells in te vinden zijn. De definitie lijkt me duidelijk: code hygiëne is de mate waarin er zich geen code smells voordoen in software.

Who cares?

Er zijn meerdere redenen om je bewust te zijn van code hygiëne:

* Onderhoudbaarheid
Code smells die tegen het design van de software aan tikken, kunnen de onderhoudbaarheid van de laatste nadelig beïnvloeden. Sommige code smells (niet alle!) zijn eigenlijk gewoon slechte design keuzes.

* Motivatie
Software met een slecht huishouden kan een negatieve invloed hebben op het plezier van de programmeurs. Natuurlijk spelen er meer en zwaardere factoren mee, zoals werkomgeving, aansluiting in het team, goed management, etc. Code hygiëne is ook een factor. Ter vergelijking: je hebt ook minder zin om een schilderijtje op te hangen in een kamer waar het een puinhoop is, toch?

* Time to market
Een goede code hygiëne kan van invloed zijn op de snelheid waarmee nieuwe features gedeployed kunnen worden. De reden is dat bij minder code smells, de programmeurs sneller kunnen werken. Alles is duidelijker, ze kunnen hun weg sneller vinden en ze zijn meer gemotiveerd (zie vorig punt).

* Sneeuwbal effect
Hoe onschuldig code smells in het begin ook kunnen zijn, ze kunnen bijdragen aan grotere problemen in een later stadium. Programmeurs kunnen minder gemotiveerd zijn om nieuwe code op een juiste manier aan te brengen als de bestaande code niet goed opgezet is. Ter vergelijking: waarom zou je nog moeite doen om dat schilderijtje netjes recht op te hangen tussen de rotzooi? Zo kunnen de problemen zich opstapelen, waardoor de kwaliteit van de code steeds verder afneemt.

* Beeld naar buiten
Onhygiënische code zichtbaar stellen voor de buitenwereld is als het buiten ophangen van de vuile was. Dit geldt voor bedrijven en ook voor individuen. Je kunt tien jaar Java ervaring op je CV hebben staan, maar met een Github account vol code smells neemt je onderhandelingspositie aan de sollicitatietafel af. Wees je bewust van je online profiel!

Wat kun je doen?

Er zijn verschillende dingen die je kunt doen voor goede code hygiëne. Allereerst is het verstandig om je bewust te zijn van code smells, zodat je ze als vanzelf kunt vermijden. Er zijn voldoende lijstjes op internet te vinden (bijvoorbeeld hier). Daarnaast zijn er voor de meeste programmeertalen zogenaamde linters die je op de vingers tikken bij code smells. Er zijn zelfs reformatter tools die een deel van alle code smells automatisch kunnen weghalen. Tot slot kun je met code reviews je collega’s helpen.

Moraal van dit verhaal: stel de juiste prioriteiten, maak afspraken met je team en… clean coding!


Bekijk alle posts van Ramon