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