2011-04-23 20 views
8

मैंने देखा कि माइक्रोसॉफ्ट ने अपने कोड-अनुबंध-रिश्तेदार कार्यों को .NET 4 में अजीब तरीके से नामित किया है।अनुबंध। अनुबंध बनाम आवश्यक है।

वे "आवश्यकता" और "सुनिश्चित" के अंत में "एस" जोड़ते हैं, इसलिए अनुबंध होते हैं। आवश्यकताएं() और अनुबंध। प्रवेश(), लेकिन "जोर" और "अनुमान" के अंत में नहीं, तो वहाँ अनुबंध हैं। एस्र्ट() और अनुबंध। एसम्यूम()। अंतर मुझे थोड़ा उलझन में डाल देता है।

वास्तव में, मेरी असली समस्या यह है कि, मैं PHP में कोड-अनुबंध का उपयोग करने की कोशिश कर रहा हूं, इसलिए मैं .NET 4 में "अनुबंध" कक्षा का अनुकरण करने के लिए कुछ लिखता हूं। चूंकि PHP में कोई अंतर्निहित विधि नहीं है पैरामीटर का प्रकार, मैं कुछ सत्यापन करने के लिए अपने स्वयं के अनुबंध वर्ग में एक विधि जोड़ता हूं। मैं "उम्मीद" शब्द चुनता हूं, क्योंकि मुझे लगता है कि "पैरामीटर की उम्मीद करें बार 'स्ट्रिंग होने के लिए ..." पैरामीटर प्रकार गलत होने पर एक आम संदेश है। और समस्या आती है। क्या मुझे अपना तरीका अनुबंध का नाम देना चाहिए। एक्सप्लोर() या मुझे इसका नाम अनुबंध करना चाहिए। एक्सपेक्ट्स()?

मैं एक गैर-अंग्रेजी भाषी देश से हूं, इसलिए मेरी खराब अंग्रेजी के लिए खेद है। यह वास्तव में एक अंग्रेजी भाषा का सवाल हो सकता है, लेकिन मुझे लगता है कि केवल प्रोग्रामर ही मेरी मदद कर सकते हैं। तो इसके लिए खेद है कि यह सवाल यहां उचित नहीं है।

उत्तर

15

मेरा मानना ​​है कि Ensures और Requires हैं का वर्णन तरीकों क्या जरूरत है और/या गारंटी देते हैं, जबकि Assert और Assume अनुबंध सत्यापनकर्ता करने के लिए आदेशों हैं।

या दूसरे शब्दों में, पूर्व दो, विधि के बाहर इंटरफ़ेस के बारे में पूर्व शर्त/postconditions वर्णन बाद के दो हैं, जबकि सिर्फ मदद करने के लिए अनुबंध सत्यापनकर्ता विधि अंदर आप के लिए अपना काम करते मेटाडाटा। एक उपयोगकर्ता के लिए प्रासंगिक है, लेकिन दूसरा नहीं है।

संबंधित मुद्दे