2008-12-15 32 views
15

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

फिर भी यज्ञि एक ऐसी अवधारणा प्रतीत होती है जो एसओ में मुश्किल से फुसफुसाती है। मैंने अनिवार्य खोज चलाई, और यह केवल एक प्रश्न शीर्षक में दिखाई देता है - और फिर द्वितीयक भूमिका में।

यह क्यों है? क्या मैं इसका महत्व अधिक महत्व दे रहा हूं?

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

यहां कुछ ऑफ-द-टॉप चल रहे प्रश्न हैं जो कोई पूछ सकता है।

क्या मेरे यूनिट टेस्ट उपयोगकर्ता आवश्यकताओं, या ढांचे की संरचना के आधार पर चुने गए हैं?

मैं स्थापित करने हूँ (और परीक्षण और बनाए रखने) यूनिट टेस्ट है कि केवल देखते हैं, क्योंकि वे ढांचे से बाहर हो जाते?

मेरी ढांचे द्वारा बनाया गया कोड का कितना है मैं कभी नहीं (, लेकिन फिर भी YAGNI हालांकि अभी भी मुझे एक दिन काट सकता है) को देखा?

उपयोगकर्ता की समस्या के बजाय मैं अपने उपकरणों पर कितना समय खर्च कर रहा हूं?

जब जोड़ी-प्रोग्रामिंग, पर्यवेक्षक की भूमिका मान अक्सर "यज्ञि" में निहित होता है।

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

+1

यह वास्तव में आपकी गलती नहीं है, लेकिन मुझे यन्नी और उसके सिर से अब तक का दर्द नहीं हो सकता है। – MusiGenesis

+0

आपको यह पोस्ट कहना चाहिए था कि आप नाम पर नहीं जा रहे हैं – sam

उत्तर

12

टीडीडी ने यज्ञी को एक तरह से कम किया है। यदि आप सही ढंग से टीडीडी करते हैं, यानी, केवल उन परीक्षणों को लिखें जिनके परिणामस्वरूप आवश्यक कार्यक्षमता है, फिर परीक्षा उत्तीर्ण करने के लिए सबसे सरल कोड विकसित करें, फिर आप डिफ़ॉल्ट रूप से YAGNI सिद्धांत का पालन कर रहे हैं। मेरे अनुभव में, यह तभी होता है जब मैं टीडीडी बॉक्स से बाहर निकलता हूं और परीक्षण से पहले कोड लिखना शुरू करता हूं, उन चीजों के लिए परीक्षण जो मुझे वास्तव में जरूरी नहीं हैं, या कोड जो कि मैं यज्ञनी का उल्लंघन करता हूं, परीक्षा उत्तीर्ण करने के सबसे आसान तरीके से अधिक है ।

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

वाईएमएमवी।

+0

बस सोचा कि मैं उल्लेख करता हूं कि मैं यह इंगित करता हूं कि मैंने इस पोस्ट का एक ब्लॉग पोस्ट में उल्लेख किया है: http://jasonmbaker.wordpress.com/2009/ 01/11/दुश्मन-परीक्षण-संचालित-विकास-भाग-ii-yagni/ –

0

मैंने एसओ रेफरेंसिंग समयपूर्व अनुकूलन पर बहुत सी पोस्ट देखी हैं जो याग्नी का एक रूप है, या कम से कम ydniy (आपको अभी तक इसकी आवश्यकता नहीं है)।

+0

मुझे आश्चर्य है कि आप इसे किस समय कॉल करते हैं जब आप समय-समय पर पहले की आवश्यकता नहीं होती है? :) – dkretz

+1

ले dorfier: समय की महाकाव्य अपशिष्ट? (ewot): डी – jalf

4

याग्गी और केआईएसएस (इसे सरल, बेवकूफ रखें) अनिवार्य रूप से एक ही सिद्धांत हैं। दुर्भाग्यवश, मैं KISS को जितनी बार देखता हूं उतनी बार "yagni" देखता हूं।

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

+0

मैं भी परियोजना विलंब के बारे में मूल भावना से सहमत हूं, लेकिन सहमत नहीं हूं कि यागनी और केआईएसएस समान हैं। मैंने बहुत सरल कोड देखा है जिसकी आवश्यकता नहीं है, और जटिल कोड की आवश्यकता है। –

+1

KISS वास्तव में किसान होना चाहिए (इसे आवश्यकतानुसार सरल रखें)। अनावश्यक एक साधारण घटक अभी भी इसकी तुलना में अधिक जटिल है - कुछ भी नहीं (NISTN?) से कुछ भी आसान नहीं है। – MusiGenesis

-1

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

+0

आप बिंदु खो रहे हैं। यागनी, बस पानी की तरह (हाँ एच 2o) अधिक खराब हो सकता है। इसके लिए काउंटर को बीडीयूएफ कहा जाता है, या यदि आप एक समानता चाहते हैं जो आपको मदद करने के लिए है: आइवरी टॉवर। यदि आपकी लीड (या कोई) कमजोरियों या अज्ञातों को खोजकर आईवीरी टॉवर/बीडीयूएफ में शामिल नहीं है - आपको समस्याएं आती हैं। यह YAGNI के अभ्यास को बेरेट करने का लाइसेंस नहीं देता है, जो संक्षेप में Agile है। – gogogadgetinternet

1
समस्या मुझे लगता है कि लोगों को

भी कारखानों लेखन, YAGNI तहत डि कंटेनरों का इस्तेमाल किया (जब तक आप पहले से ही अपने codebase में है है) बाल्टी के लिए करते हैं है। मैं वहां जेबी किंग से सहमत हूं। कई लोगों के लिए मैंने YAGNI के साथ काम किया है, जो कोनों को काटने/मैला कोड लिखने का लाइसेंस प्रतीत होता है।

उदाहरण के लिए, मैं एकाधिक मॉडल/निर्माताओं के पिनपैड को सारणित करने के लिए पिनपैड एपीआई लिख रहा था। मैंने पाया जब तक कि मेरे पास समग्र संरचना नहीं है, मैं अपने यूनिट टेस्ट भी नहीं लिख सकता। हो सकता है कि मैं टीडीडी का बहुत अनुभवी प्रैक्शनर न हो। मुझे यकीन है कि इस बात पर अलग राय होगी कि मैंने क्या किया यागनी है या नहीं।

+1

फैक्टरी स्पैम मुझे बार्फ़ बनाता है। अक्सर, कारखाने के रूप में काम करने के लिए जरूरी चीज एक उच्च आदेश समारोह है। और यहां तक ​​कि * अधिक * अक्सर, किसी कारखाने की आवश्यकता नहीं होती है, लेकिन यह गोल्डन हैमर है जिसे समझना आसान है। – dss539

+0

नीचे जेबी किंग को मेरी प्रतिक्रिया देखें। मुझे नहीं लगता कि आप यागनी समझ रहे हैं। – gogogadgetinternet

3

ड्राइव YAGNI को बदलने की स्वतंत्रता। एक झरना परियोजना में, मंत्र नियंत्रण क्षेत्र है। दायरे को ग्राहक के साथ अनुबंध स्थापित करके नियंत्रित किया जाता है। नतीजतन, ग्राहक उन सभी चीजों को प्रस्तुत करता है जो वे स्कोप दस्तावेज़ में सोच सकते हैं, यह जानकर कि अनुबंध पर हस्ताक्षर किए जाने के बाद दायरे में परिवर्तन मुश्किल हो जाएगा। नतीजतन, आप उन अनुप्रयोगों के साथ समाप्त होते हैं जिनमें सुविधाओं की एक कपड़े धोने की सूची है, न कि सुविधाओं के सेट का मूल्य।

एक चुस्त परियोजना के साथ, उत्पाद स्वामी प्राथमिकता वाले उत्पाद बैकलॉग बनाता है। विकास दल प्राथमिकता यानी मूल्य के आधार पर सुविधाओं का निर्माण करता है। नतीजतन, सबसे महत्वपूर्ण चीजें पहले बनाया गया है। आप एक ऐसे एप्लिकेशन के साथ समाप्त होते हैं जिसमें उपयोगकर्ताओं द्वारा मूल्यवान सुविधाएं होती हैं। सामान जो महत्वपूर्ण नहीं है सूची से गिरता है या नहीं किया जाता है। वह यज्ञ है।

जबकि यज्ञ एक अभ्यास नहीं है, यह प्राथमिकता वाले बैकलॉग सूची का परिणाम है। व्यापारिक साझेदार ने लचीलापन को व्यापार प्रदान किया है, यह देखते हुए कि वे उत्पाद बैकलॉग को पुनरावृत्ति से पुनरावृत्ति में बदल सकते हैं और पुन: स्थापित कर सकते हैं। यह समझाने के लिए पर्याप्त है कि YAGNI लाभ प्राप्त होता है जब हम प्रक्रिया में देर से परिवर्तन को आसानी से स्वीकार करते हैं।

संबंधित मुद्दे