Je suis un programmeur quelque peu défensif et un grand fan des contrats de code Microsofts.
Maintenant, je ne peux pas toujours utiliser C # et dans la plupart des langues, le seul outil dont je dispose est les assertions. Je me retrouve donc généralement avec un code comme celui-ci:
class
{
function()
{
checkInvariants();
assert(/* requirement */);
try
{
/* implementation */
}
catch(...)
{
assert(/* exceptional ensures */);
}
finally
{
assert(/* ensures */);
checkInvariants();
}
}
void checkInvariants()
{
assert(/* invariant */);
}
}
Cependant, ce paradigme (ou ce que vous appelleriez) conduit à beaucoup d'encombrement de code.
J'ai commencé à me demander si cela en valait vraiment la peine et si un test unitaire approprié couvrirait déjà cela?