क्या TDD का "स्पष्ट कार्यान्वयन" का अर्थ है कोड पहले, परीक्षण के बाद?


11

मेरे मित्र और मैं अपेक्षाकृत नए टीडीडी हैं और "ओबीडी कार्यान्वयन" तकनीक (केंट बेक द्वारा "टीडीडी बाय उदाहरण") के बारे में विवाद है। मेरे मित्र का कहना है कि इसका मतलब है कि यदि कार्यान्वयन स्पष्ट है, तो आपको उस नए व्यवहार के लिए किसी भी परीक्षण से पहले - आगे बढ़ना चाहिए और इसे लिखना चाहिए । और वास्तव में पुस्तक कहती है:

आप सरल ऑपरेशन कैसे लागू करते हैं? बस उन्हें लागू करें।

इसके अलावा:

कभी-कभी आप सुनिश्चित हैं कि आप जानते हैं कि किसी ऑपरेशन को कैसे लागू किया जाए। आगे बढ़ें।

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

फिर भी मैं "स्पष्ट" पुस्तक का कोई भी उद्धरण नहीं पा सका, जिसका अर्थ अभी भी पहले परीक्षण है।

तुम क्या सोचते हो? क्या हमें पहले या बाद में परीक्षण करना चाहिए जब कार्यान्वयन "स्पष्ट" (टीडीडी के अनुसार, निश्चित रूप से) है? क्या आपको पता है कि कोई किताब या ब्लॉग पोस्ट बस यही कह रही है?


3
मैं आपकी व्याख्या से सहमत हूं। पहले परीक्षण और "बस लागू करें" जब समस्या पुनरावृत्तियों के बिना हल करने के लिए पर्याप्त आसान है। लेकिन पहले टेस्ट जरूर करें।
कार्ल मैनस्टर

1
यह स्पष्ट रूप से स्पष्ट है कि किसी भी कोड को केवल लिखे जाने के बाद ही परीक्षण किया जा सकता है ...
थॉमसएक्स

जवाबों:


11

मैं आपकी व्याख्या से सहमत हूं - यह अभी भी रेड ग्रीन रिफैक्टर है, केवल रिफ्लेक्टर बिट के साथ छोड़ दिया गया है;)

तो, पहले एक असफल परीक्षा लिखें, फिर "सबसे सरल संभव" एक के डिजाइन को धीरे-धीरे बनाने के बजाय स्पष्ट समाधान को लागू करें।


6

क्या आपको पता है कि कोई किताब या ब्लॉग पोस्ट बस यही कह रही है?

मैं तर्क दूंगा कि बेक की किताब बस यही कहती है।

वह कहता चला जाता है

हालांकि, केवल स्पष्ट कार्यान्वयन का उपयोग करके, आप स्वयं की पूर्णता की मांग कर रहे हैं। मनोवैज्ञानिक रूप से, यह एक विनाशकारी कदम हो सकता है। क्या होगा यदि आप जो लिखते हैं वह वास्तव में सबसे सरल परिवर्तन नहीं है जो परीक्षा पास करने के लिए प्राप्त कर सकता है? अगर आपका साथी आपको और भी सरल दिखाए तो क्या होगा? तुम एक विफलता हो! आपकी दुनिया आपके चारों ओर टूटती है! तू मर। तुम जम जाओ।

यदि आप कोड लिखने से पहले मौजूद नहीं हैं तो आप कोड लिखकर पास करने के लिए टेस्ट कैसे प्राप्त कर सकते हैं?


1

जाहिर है कि यहाँ कोई कठिन और तेज़ नियम नहीं हैं, हम सब के बाद भी चुस्त हो रहे थे और हमें इसका पालन करना चाहिए, जैसा कि हम इसे करना चाहते हैं :)

आंशिक रूप से यह सरल ऑपरेशन पर निर्भर करेगा, और जैसा कि आप TDD का अधिक से अधिक अभ्यास करते हैं, आप नियमित रूप से आपके द्वारा बुरी तरह से परीक्षण किए गए सामान को पाएंगे या वास्तव में वास्तव में परीक्षण नहीं करेंगे, यह सीखने की अवस्था का एक हिस्सा है।

यह भी मत भूलना कि TDD आपको इंटरफ़ेस और परीक्षण को लाइव कोड में करने से पहले क्रियान्वयन की अनुमति देता है।

आप जान सकते हैं कि किसी चीज़ को कैसे लागू किया जाए, लेकिन आप कितनी बार एक संपूर्ण कक्षा / विधि आदि को लिखते हैं, पहली बार बिना किसी तरीके के साथ या बिना एक या दो और छह महीने बाद कोड के माध्यम से कदम रखते हुए जब आप कुछ ऐसा कर सकते हैं अधिक आत्मविश्वास और फिर से परीक्षण के सैंडबॉक्स में।

बेशक, परीक्षणों का मतलब यह नहीं है कि आप पहली बार कोड को और अधिक सही तरीके से लिखते हैं, लेकिन आपके परिवर्तन परीक्षण द्वारा संचालित होते हैं और परीक्षण कोड के पहले ग्राहक बन जाते हैं और चूंकि परीक्षण बहुत कम लागत वाले होते हैं और अधिक महत्वपूर्ण रूप से बदलने के लिए कोई जोखिम नहीं होता है आपके पास विकसित होने के दौरान अधिक आत्मविश्वास और स्वतंत्रता है।

यदि आपका वास्तव में अच्छी कवरेज और उच्च गुणवत्ता प्राप्त करने की कोशिश कर रहा है, तो शुरू करने के लिए अधिक परीक्षणों के पक्ष में, जैसा कि आप TDD का अधिक से अधिक अभ्यास करते हैं और आप अपनी आवश्यकता के स्तर के बारे में समझ विकसित करेंगे।


1

मैंने सीखा है कि तुच्छ कोड के लिए किसी भी तरह का कोई अयोग्य नहीं होना चाहिए।

उदाहरण: यदि आपके पास एक जावा गेट्टर / सेटर विधि है जो किसी स्थानीय चर के लिए एक विधि को मैप करती है तो इसके लिए एक अचूक होगा।

यह वही हो सकता है जो लेखक का अर्थ है

> "How do you implement simple operations? Just implement them."
> "Sometimes you are sure you know how to implement an operation. Go ahead."
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.