क्या अनुबंध द्वारा डिजाइनिंग (DbC) रक्षात्मक कार्यक्रम करने का एक तरीका हो सकता है?
क्या प्रोग्रामिंग का एक तरीका दूसरे की तुलना में कुछ मामलों में बेहतर है?
क्या अनुबंध द्वारा डिजाइनिंग (DbC) रक्षात्मक कार्यक्रम करने का एक तरीका हो सकता है?
क्या प्रोग्रामिंग का एक तरीका दूसरे की तुलना में कुछ मामलों में बेहतर है?
जवाबों:
अनुबंध और रक्षात्मक प्रोग्रामिंग द्वारा डिजाइन कुछ अर्थों में एक दूसरे के विरोधी हैं: डीबीसी में, आप सहयोगियों के बीच अनुबंधों को परिभाषित करते हैं और आप इस धारणा के तहत कार्यक्रम करते हैं कि सहयोगी उनके अनुबंधों का सम्मान करते हैं। रक्षात्मक प्रोग्रामिंग में, आप इस धारणा के तहत कार्यक्रम करते हैं कि आपके सहयोगी अपने अनुबंधों का उल्लंघन करते हैं।
DbC स्टाइल में लिखा गया एक वास्तविक वर्गाकार रूट रूट अपने अनुबंध में यह बताता है कि आपको नकारात्मक संख्या में पास होने की अनुमति नहीं है और फिर यह मान लें कि यह कभी भी ऋणात्मक संख्या का सामना नहीं कर सकता है। एक वास्तविक वर्गाकार रूट रूटीन को रक्षात्मक रूप से लिखा जाता है कि यह माना जाएगा कि यह एक नकारात्मक संख्या है और उचित सावधानी बरतें।
नोट: यह निश्चित रूप से संभव है कि डीबीसी में कोई और अनुबंध की जांच करेगा। उदाहरण के लिए, एफिल में, अनुबंध प्रणाली रनटाइम पर एक नकारात्मक संख्या की जांच करेगी और एक उपयुक्त अपवाद फेंक देगी। स्पेक # में, प्रमेय कहावत संकलन समय पर नकारात्मक संख्याओं की जांच करेगा और बिल्ड को विफल कर देगा, अगर यह साबित नहीं कर सकता है कि दिनचर्या कभी भी नकारात्मक संख्या से नहीं गुजरेगी। अंतर यह है कि प्रोग्रामर यह चेक नहीं बनाता है।
क्या अनुबंध द्वारा डिजाइनिंग (DbC) रक्षात्मक कार्यक्रम करने का एक तरीका हो सकता है?
हाँ।
"रक्षात्मक प्रोग्रामिंग" अक्सर समय बर्बाद करने का एक बहाना है। यह अक्सर उन चीजों की जांच में समय बर्बाद करता है जो साधारण अपवादों का कारण बनेंगे। अपवादों के बजाय, अतिरिक्त IF कथन अपवाद-हैंडलिंग खंडों के बजाय लिखे गए हैं।
अनुबंध को परिभाषित करें और इसके साथ किया जाए।
जब कोई अनुबंध का उल्लंघन करता है, तो कार्यक्रम - सामान्य घटनाओं में - सामान्य अपवादों को तोड़ता और उठाता है जिन्हें सामान्य रूप से नियंत्रित किया जा सकता है।
"रक्षात्मक प्रोग्रामिंग" और "त्रुटि निवारण" त्रुटियों को जोड़ने के लिए दिखाया जा सकता है (क्योंकि त्रुटि निवारण जाँचें स्वयं त्रुटिपूर्ण हैं) त्रुटियों को रोकने के बजाय।
एक्सेप्शन हैंडलिंग "डिफेंसिव प्रोग्रामिंग" की तुलना में कहीं बेहतर तरीके से साइलेंस, लॉग इन और हैंडल कर सकता है।