निर्भरता परिवर्तन से निपटने के लिए अच्छा प्रथाओं आवेदन डिजाइन के लिए अच्छा प्रथाओं के रूप में ही हैं। आप अपने वास्तुकला परत और व्यवस्था परिवर्तन अलग रखने के लिए, ताकि एक निर्भरता उन्नयन अपने आवेदन के हर हिस्से को नहीं तोड़ता है में प्रत्येक निर्भरता पर अपने कोड के व्यापक युग्मन कम करना चाहते हैं। इंटरफेस के लिए कोड और बुनियादी ढांचे कोड से अलग व्यापार तर्क रखें।
मामूली उन्नयन (निर्भरता के उन्नयन बिंदु विज्ञप्ति) के लिए, यह आपकी मदद करता है इकाई परीक्षण के एक व्यापक सेट एपीआई परिवर्तन के कारण विफलताओं का पता लगाने के है। यह एक बड़ा कारण है कि कभी-कभी यह हमेशा परीक्षण करने के लिए सतह पर दिखाई देने वाले छोटे परीक्षणों को लिखने में मदद करता है। इसका एक उदाहरण एक साधारण क्वेरी करने के लिए एक साधारण जेडीबीसी यूनिट परीक्षण लिख रहा है। यह डेटाबेस अपग्रेड के बाद जेडीबीसी ड्राइवर के साथ रनटाइम समस्या को पकड़ने तक प्रयास की बर्बादी की तरह लगता है (यह मेरे साथ हुआ है)।
बड़े बदलावों के लिए (जैसे स्प्रिंग जैसे ढांचे के असंगत संस्करणों के बीच अपग्रेड करना), यदि आपके पास कुछ स्वचालित कार्यात्मक या एकीकरण परीक्षण हैं, या कम से कम एक कार्यात्मक विनिर्देश है जो आपके क्यूए लोग उच्च स्तर की पुष्टि के लिए चला सकते हैं कार्यक्षमता। यूनिट परीक्षण अब प्रासंगिक नहीं होंगे यदि आप जिस फ्रेमवर्क एपीआई को अपग्रेड कर रहे हैं वह व्यापक कोड परिवर्तनों की आवश्यकता के लिए पर्याप्त है।
एक निर्भरता के एक संस्करण से दूसरे असंगत में माइग्रेशन के प्रबंधन का वास्तविक सामरिक हिस्सा वास्तव में आप जो कर रहे हैं उस पर निर्भर करता है। एक परिपक्व पुस्तकालय किसी प्रकार का माइग्रेशन पथ प्रदान करेगा और आशा है कि आपको सबकुछ फिर से लिखने की आवश्यकता नहीं होगी। एक नई सुविधा को लागू करने से संबंधित परिवर्तनों से ढांचे के उन्नयन से संबंधित कोड परिवर्तनों को अलग करना एक अच्छा विचार है। इस तरह अगर कुछ तोड़ता है तो आपको पता चलेगा कि इसे फ्रेमवर्क अपग्रेड के साथ करना है और न कि किसी नई सुविधा को लागू करते समय आपने जो कुछ तोड़ दिया है।
यह इतना कठिन बनाता है कि रनटाइम पर आपके पास केवल JVM में एक विशेष निर्भरता का एक संस्करण हो सकता है, इसलिए आपको एक ही समय में सभी कोड अपडेट करना होगा। ओएसजीआई विभिन्न निर्भरता संस्करणों पर निर्भर करने के लिए अलग-अलग ओएसजीआई बंडलों को चलाने की अनुमति देकर इस विशेष समस्या को संबोधित करता है, ताकि आप रनटाइम पर विभिन्न निर्भरता संस्करणों पर निर्भर हो सकें। इस प्रकार ग्रहण अन्य प्लगइन को तोड़ने के बिना प्लगइन के लिए निर्भरता प्रबंधित करता है।
स्रोत
2010-03-09 04:07:06
मैं समझता हूं कि आप क्या कह रहे हैं, लेकिन आप इस सवाल पर चमक रहे हैं। पूरी तरह से। मान लीजिए कि आप उन स्थितियों में से एक हैं, कुछ सर्वोत्तम प्रथाएं क्या हैं? (या क्या हर कोई सिर्फ ग्रहण (और शायद m2eclipse) को बताता है कि कक्षाएं अब मौजूद नहीं हैं, बहिष्कृत हो गई हैं, आदि ... और वहां से चले गए हैं?) मेरे प्रश्न के दूसरे भाग के लिए, अपनी निर्भरताओं को कुछ हद तक ऊपर रखना आज तक आपके द्वारा सूचीबद्ध सूची के कारणों के लिए भविष्य के उन्नयन में मदद मिल सकती है (या अनावश्यक यदि आप पहले से ही 'सिक्योरर एक्स 2.0' सुविधा वाले संस्करण में अपग्रेड कर चुके हैं और किसी भी बाधा को कम कर चुके हैं)। –
मैं सर्वोत्तम अभ्यास के बारे में क्या कहने की कोशिश कर रहा हूं वह है: अपनी निर्भरताओं को केवल तभी अपडेट करें जब यह स्पष्ट हो जाए कि आप जिस निर्भरता संस्करण का उपयोग कर रहे हैं, वह इसे काट नहीं रहा है। अपने आईडीई को बताएं कि कुछ कब बहिष्कृत है या अब मौजूद नहीं है, यही वह है जो इसके लिए है। मुझे विश्वास नहीं है कि अद्यतित रहने से भविष्य में व्यापक कोड परिवर्तनों को रोका जा सकेगा। यह आपकी निर्भरताओं के विकास का ज्ञान मानता है। आप बस अपनी निर्भरताओं पर परीक्षण, परीक्षण, परीक्षण और अपनी निर्भरताओं को कम कर सकते हैं। – Joel