मैं कुछ हद तक रक्षात्मक प्रोग्रामर हूं और माइक्रोसाफ्ट कोड कॉन्ट्रैक्ट्स का बहुत बड़ा प्रशंसक हूं।
अब मैं हमेशा C # का उपयोग नहीं कर सकता और अधिकांश भाषाओं में मेरे पास केवल एक ही उपकरण है। इसलिए मैं आमतौर पर इस तरह कोड के साथ समाप्त होता है:
class
{
function()
{
checkInvariants();
assert(/* requirement */);
try
{
/* implementation */
}
catch(...)
{
assert(/* exceptional ensures */);
}
finally
{
assert(/* ensures */);
checkInvariants();
}
}
void checkInvariants()
{
assert(/* invariant */);
}
}
हालाँकि, यह प्रतिमान (या जिसे आप इसे कहते हैं) बहुत कोड अव्यवस्था की ओर ले जाता है।
मुझे आश्चर्य है कि क्या यह वास्तव में प्रयास के लायक है और क्या उचित इकाई परीक्षण पहले से ही इसे कवर करेगा?