Ben biraz savunmacı bir programcıyım ve Microsofts Kod Sözleşmelerinin büyük bir hayranıyım.
Şimdi her zaman C # kullanamıyorum ve çoğu dilde sahip olduğum tek araç iddialar. Bu yüzden genellikle böyle bir kod ile sonuçlanır:
class
{
function()
{
checkInvariants();
assert(/* requirement */);
try
{
/* implementation */
}
catch(...)
{
assert(/* exceptional ensures */);
}
finally
{
assert(/* ensures */);
checkInvariants();
}
}
void checkInvariants()
{
assert(/* invariant */);
}
}
Ancak, bu paradigma (ya da her ne derseniz) kod karmaşasına neden olur.
Gerçekten çabaya değip değmeyeceğini ve uygun birim testinin zaten bunu kapatacağını merak etmeye başladım?