कोड अनुबंध तब तक बढ़िया काम करते हैं जब तक आपको ढांचे कोड से बाहर आने वाले परिणामों के लिए bazillion Contract.Assume(...)
जोड़ना न पड़े। उदाहरण के लिए, MemoryStream.ToArray()
कभी भी एक शून्य सरणी नहीं लौटाता है, जैसा कि मैं इसे परावर्तक में देखने से कह सकता हूं, लेकिन इसे अनुबंध के रूप में दस्तावेज नहीं किया गया है, इसलिए मुझे इसे हर जगह Assume
करना है।मैं मौजूदा ढांचे (बीसीएल) कोड के लिए कोड अनुबंध कैसे निर्दिष्ट कर सकता हूं?
क्या पहले से मौजूद कार्यों के लिए अनुबंध लाइब्रेरी बनाने का कोई जादुई तरीका है? मैं अनुमान लगा रहा हूं कि एक बार जब आपको कम से कम इस्तेमाल किए जाने वाले फ्रेमवर्क कार्यों में से कुछ दर्जन मिलते हैं, तो चेतावनियां अधिक आकर्षक हो जाएंगी।
यह "कभी भी एक शून्य सरणी नहीं देता" * *, वैसे भी। अनुबंध के बारे में चीजों में से एक यह है कि आपको इसे बदलना नहीं है। इस तरह के एक अनुबंध की अनुपस्थिति * शायद * सुझाव दे सकता है कि यह * बदल सकता है। शायद। –
एक उचित बिंदु है, लेकिन कोड अनुबंध के मामले में, मुझे संदेह है क्योंकि अनुबंध टीम के पास हर जगह अनुबंध जोड़ने का समय नहीं है। Http://social.msdn.microsoft.com/Forums/en-NZ/codecontracts/thread/d8e2c2ad-de37-42ef-a854-02052d821975 देखें, जहां टीम के सदस्यों में से एक नोट करता है "हम तेजी से अंतराल भरने पर काम कर रहे हैं जैसा कि हम कर सकते हैं, लेकिन यह मुख्य रूप से हमारे द्वारा संचालित होता है या आप पाते हैं कि महत्वपूर्ण अंतर क्या हैं। आदर्श रूप में, हम पुस्तकालयों के माध्यम से व्यवस्थित रूप से जाते हैं और उन्हें एनोटेट करते हैं। फिलहाल हमारे पास मनुष्य शक्ति नहीं है। " –