Leuk die definities, maar precies waarom is het gebruik van een debugger om variablen te bekijken evil? Als cout << "userKey: " << userKey << " serverSlot: " serverSlot << endl; enz enz... wel mag, waarom mag ik dan niet via mijn debugger kijken wat die variablen als waarden hebben? Je zou kunnen zeggen dat de debugger voor mij, in dit geval, de universele cout is mbt het weergeven van variabelen.EfBe schreef op 30 mei 2004 @ 15:50:
Debuggen != testen
Testen is semantics testen. Debuggen is het vinden van fouten, dus wanneer je al hebt geconstateerd dat je programma een fout bevat.
Testen is een zeer breed begrip. Als ik snel wil testen of na een loop variable X de gewenste waarde heeft, waarom zou ik dan niet na de loop een breakpoint zetten om te controleren of dat klopt? -Mag- dat van jou alleen dmv een cout?
Als ik wil testen of mijn datastructuur correct is opgebouwt in het geheugen, waarom zou ik deze dan niet in de debugger inspecteren?
Ik denk, beste Efbe, dat jij je te zeer vastpint op de naam die het beestje heeft: Debugger roept bij jou (mischien) een verkeerde associatie op. Voor mij is een debugger niet alleen een middel om te debuggen, maar ook een tool om de state van mijn code op een bepaald soort manier te visualiseren, om mezelf in inside-look te geven. Een semantische test kan daar mee samen vallen, of kan dat niet. Dat hangt van de code in kwestie af.
Testen gaat in verschillende fasen, van de schets op papier van een algortime, via een compile (maakte ik geen syntax fouten), via een -snelle- test-run, via een -snelle- inspectie van de state, via unit testen, via code reviews, via acceptence & QA tests, tot en met de praktijk test.
Mischien ben jij, Efbe, zoiemand die van die dingen op zijn CV schrijft als "nauwkeurigheid: ik maak minder dan 0.01 fouten per 1000 regels" oid, maar in de praktijk gebruikt elke programmeur die ik ken een vorm van "cout" testen. Heck, in veel opensource code die ik lees staan de cout's of printf's nog gecomment. Ipv cout bekijk ik de waardes via een debugger. Ik jou ogen ben ik nu een slechte ontwikkelaar?
Nee, nooit gebruikt en ben er ook geen voorstander van. Net zomin als ik er een voorstander van ben om tijdens debuggen waarden van variablen te veranderen.Laat me raden, jij bent zeker ook een voorstander van Edit & Continue?
Jij wel?
Maar laat mij ook eens raden, jij bent zeker een voorstander van formele correctheids bewijzen voor je gehele code? De pre-inspectie voer je uit over iedere regel code die je schrijft?
It's shocking to find how many people do not believe they can learn, and how many more believe learning to be difficult.