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