Two Fer

Two Fer

आसान

परिचय

अंग्रेज़ी बोलने के कुछ तरीकों में, जब आप "two for" जल्दी बोलते हैं, तो वह "two fer" जैसा सुनाई देता है। Two-for-one कहने का मतलब है कि अगर आप एक चीज़ खरीदते हैं, तो आपको एक और मुफ्त में मिल जाती है। इसलिए "two-fer" वाक्यांश अक्सर two-for-one ऑफर का संकेत देता है।

कल्पना कीजिए एक बेकरी की, जहाँ छुट्टियों का ऑफर है और आप एक की कीमत पर दो कुकीज़ खरीद सकते हैं ("two-fer one!")। आप यह ऑफर लेते हैं और (बड़ी उदारता से) कतार में किसी और को अतिरिक्त कुकी देने का फैसला करते हैं।

निर्देश

आपको यह तय करना है कि अतिरिक्त कुकी बाँटते समय आप क्या कहेंगे।

अगर आपको उस व्यक्ति का नाम पता है (जैसे कि उसका नाम Do-yun है), तो आप कहेंगे:

One for Do-yun, one for me.

अगर आपको उस व्यक्ति का नाम नहीं पता है, तो आप उसकी जगह you कहेंगे।

One for you, one for me.

यहाँ कुछ उदाहरण दिए गए हैं:

नाम संवाद
Alice One for Alice, one for me.
Bohdan One for Bohdan, one for me.
One for you, one for me.
Zaphod One for Zaphod, one for me.

कार्यान्वयन

शुरू करने से पहले यह अच्छी तरह समझ लीजिए कि ऐसा कोड कैसे लिखा जाता है जो टेस्ट केस पास कर सके। अधिक जानकारी के लिए यह ट्यूटोरियल देखिए।

Java के अधिकांश अभ्यासों में कई टेस्ट केस होते हैं। इन केसों को इस तरह बनाया गया है कि वे एक उपयोगी प्रक्रिया में मदद करें, जिसे टेस्ट-ड्रिवन डेवलपमेंट (TDD) कहते हैं। TDD में एक व्यवस्थित चक्र बार-बार दोहराया जाता है, जिससे प्रोग्रामरों को जटिल कार्यक्षमता एक साथ बनाने के बजाय टुकड़ों में बनाने में मदद मिलती है। उस चक्र को इस तरह बताया जा सकता है:

  1. ऐसा टेस्ट जोड़िए जो उस कार्यक्षमता के एक हिस्से का वर्णन करे जो आपके कोड में अभी नहीं है।
  2. टेस्ट चलाकर जाँचिए कि अभी जोड़ा गया यह टेस्ट फेल होता है।
  3. अपने मौजूदा कोड को तब तक बदलते रहिए जब तक कि:
    • पुराने सारे टेस्ट पास होते रहें;
    • नया टेस्ट भी पास हो जाए।
  4. अपना कोड साफ कीजिए और ध्यान रखिए कि सारे टेस्ट पास होते रहें। इसके लिए आम तौर पर वेरिएबलो के नाम बदलने पड़ते हैं, दोहराए गए लॉजिक के हिस्से हटाने पड़ते हैं, बची हुई लॉगिंग हटानी पड़ती है, इत्यादि।
  5. जब तक मनचाही सारी कार्यक्षमता न बन जाए, तब तक चरण 1 पर लौटते रहिए!

इस ट्रैक की टेस्ट फाइलों में वे सारे टेस्ट मौजूद हैं जो आपके हल को मान्य माने जाने के लिए पास करने होंगे। ऐसा लगता है कि यह ऊपर बताए गए चक्र से मेल नहीं खाता, जिसमें टेस्ट एक-एक करके लिखे जाते हैं। लेकिन हम अपने टेस्ट जिस टूल से लिखते हैं, JUnit, वह @Disabled नाम का एनोटेशन देता है, जिसे इस्तेमाल करके किसी पहले से लिखे टेस्ट को अस्थायी रूप से छोड़ा जा सकता है। इस एनोटेशन की मदद से हम यह सुनिश्चित करते हैं कि हम जो टेस्ट फाइलें आपको देते हैं, वे इन नियमों का पालन करती हैं:

  • किसी भी टेस्ट फाइल का पहला टेस्ट डिफॉल्ट रूप से नहीं छोड़ा जाता।
  • किसी भी टेस्ट फाइल में पहले टेस्ट के अलावा बाकी सारे टेस्ट डिफॉल्ट रूप से छोड़ दिए जाते हैं।

इससे आप इन थोड़े बदले हुए चरणों को अपनाकर TDD चक्र का अनुकरण कर सकते हैं:

  1. टेस्ट चलाकर जाँचिए कि अभी अधिक से अधिक एक टेस्ट फेल होता है।
  2. अपने मौजूदा कोड को तब तक बदलते रहिए जब तक छोड़े न गए सारे टेस्ट पास न हो जाएँ।
  3. अपना कोड साफ कीजिए और ध्यान रखिए कि छोड़े न गए सारे टेस्ट पास होते रहें।
  4. टेस्ट फाइल में सबसे ऊपर लिखा @Disabled एनोटेशन हटा दीजिए।
  5. जब तक कोई भी टेस्ट छोड़ा न जाए और सारे टेस्ट पास हो जाएँ, तब तक चरण 1 पर लौटते रहिए!

स्रोत

इस अभ्यास का स्रोत देखिए।

GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
Java Exercism

Two Fer शुरू करने के लिए तैयार हैं?

Exercism पर साइन अप कीजिए और Java को 26 कॉन्सेप्ट158 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।