vrijdag, augustus 04, 2006

Een goede programmeur herken je aan zijn debugging

Op mijn werk heb ik als hobby om one-liners en adviezen rond te strooiien. Voor de grap, maar altijd met een serieuze ondertoon. Zo roep ik vrijwel dagelijks: "Gebruik geen stored procedures!", "regex is NIET de oplossing" en "van coding guidelines ga je geen betere progamma's schrijven". Sinds kort heb ik er een nieuwe bij "Goede programmeurs herken je aan hun debugging skills.". En die wil ik graag even uitleggen.

Hoe goed is een programmeur? Hoe wil je dat meten? Aantal regels code per uur? Aantal bugs per duizend regels? Aantal sourcesafe checkins per maand? Het is allemaal moeilijk te meten, terwijl er toch verschillen zijn tussen hoe goed programmeurs zijn. De ene krijgt nu eenmaal meer voor elkaar dan een andere Hoe ga je daar mee om?

Een goede programmeur schrijft goede code. Eens? Goede code is code zonder fouten. Eens? Code schrijven zonder fouten is onmogelijk. Eens? Fouten oplossen doe je door te debuggen. Hoe goed je code kunt debuggen hangt af van de manier waarop de code geschreven is. Eens?


String s = (String)var.ToString().SubString(blaat.IndexOf("a"), 8).ToLower().Trim();

Is veel lastiger dan:

String myString = var.toString();
myString = myString.trim();
myString = myString.ToLower();
int pos = blaat.IndexOf("a");
String s = myString.SubString(pos, 8);

En in het 2e voorbeeld zie je in één oogopslag dat de code niet veilig is. Wat als er in blaat geen "a" zit? Wat als myString korter is dan 8 karakters? Dat is debugging zonder de debugger ook alleen maar te gebruiken! En wat als blaat null is? In het 1e geval krijg je een Exception op een hele lange regel. In het 2e geval krijg je een Exception op: "int pos = blaat.IndexOf("a");" Vertel mij maar wat makkelijker is?

Dit soort dingen zijn moeilijk in coding conventions te vangen. Dit heeft te maken met goede programmeurs die ervaring hebben met debuggen. En weten hoe je fout zoeken in code makkelijker kunt maken. Eigenlijk heb je maar één coding conventie nodig: "Zorg dat je code goed debugbaar is!"

Voor debugging heb je veel kennis en ervaring nodig van de taal en het platform waarin je werk. Moet je zorgvuldig te werk te gaan en doorzettingsvermogen hebben. Beoordeel een programmeur daarom niet op zijn code, maar op zijn debugging.

4 opmerkingen:

Anoniem zei

Gelukkig weet iedereen jouw opmerkingen ook naar waarde te schatten....

Onder de categorie: 'Daar is Hans weer'.

Gr.

Alex

Anoniem zei

Helemaal mee eens Hans, alleen van die stopro's weet ik niet, daar ben vind ik een nuance op de plaats (die ik heel best kan verdedigen). REGEX? Nee, idd, da's nooit de oplossing (hoe was het ook al weer? je hebt een probleem; zoekt de oplossing; gebruikt een regex; nu heb je d'r twee?).

Maar ff serieus, debuggen is belangrijker dan het coden zelf. Code schrijven haal je uit een boekje, debuggen is pure praktijkervaring. Misschien is dat wel een leuke uitbreiding voor de HIO? Een collega debugging :D

Anoniem zei

Ik bedoel natuurlijk college ipv collega.. ben toe aan weekend denk ik..

Anoniem zei

en wanneer schrijf je nu weer over de koffiepads?