यागनी "सिद्धांत" कहता है कि आपको "आवश्यकता नहीं है" के रूप में आपको आवश्यकतानुसार कार्यक्षमता प्रदान करने पर ध्यान केंद्रित नहीं करना चाहिए।यागनी का उल्लंघन कब करें?
मैं आम तौर पर किसी भी नियम के ऊपर सामान्य ज्ञान का उपयोग करता हूं, इससे कोई फर्क नहीं पड़ता कि कुछ समय बाद मुझे लगता है कि अगर आपके पास अच्छे कारण हैं, तो यह डिज़ाइन या भविष्य के सबूत पर कुछ उपयोगी है, भले ही यह संभव हो इसका इस्तेमाल करें।
वास्तविक मामले मैं अपने हाथ में है अभी और अधिक या कम इस तरह है:
मैं एक साधारण मालिकाना संचार प्रोटोकॉल (ओएसआई स्तर 4) से अधिक को चलाने के लिए है कि एक आवेदन पत्र मिल गया है। इस प्रोटोकॉल में विशेषताओं का एक वांछनीय सेट है (जैसे निम्नलिखित एनओआरएम विनिर्देश) जो आवेदन को मजबूती प्रदान करते हैं लेकिन जिन्हें सख्ती से जरूरी नहीं है (यूडीपी मल्टीकास्ट स्वीकार्य हो सकता है)।
यह भी तथ्य है कि आवेदन संभवतः (लेकिन निश्चित रूप से) भविष्य में अन्य ग्राहकों द्वारा उपयोग नहीं किया जाएगा, जो स्वामित्व समाधान तक पहुंच नहीं पाएंगे और इसलिए, एक और समाधान की आवश्यकता होगी। मुझे पता है कि आवेदन के लिए किसी अन्य ग्राहक की संभावना अधिक है।
तो, आपकी सोच क्या है? क्या मुझे सिर्फ मालिकाना प्रोटोकॉल के लिए डिज़ाइन करना चाहिए और जब मुझे वास्तव में इसकी ज़रूरत है तो मुझे रिफैक्टरिंग, इंटरफ़ेस निष्कर्षण छोड़ना चाहिए और क्या मुझे डिज़ाइन अब भविष्य के लिए सोच रहा है?
नोट: बस स्पष्ट होना, मैं (YAGNI उल्लंघन करने के लिए जब) सामान्य प्रश्न के विचारों के सभी प्रकार के सुनने में रुचि है, लेकिन मैं वास्तव में चाहते कुछ सलाह या मेरे वर्तमान दुविधा :)
पर विचार की तरह
यह आज http://programmers.stackexchange.com पर अधिक उचित रूप से पूछा गया है ... –
कल्पना करें कि COBOL डेटिंग सिस्टम जो वर्ष के लिए केवल 2 अंक उपयोग करते हैं। यह YAGNI का उल्लंघन करने के लिए एक अच्छा क्षेत्र होगा :) –