2009-02-27 9 views
8

मुझे अभी जावा एप्लिकेशन विरासत में मिला है और कोड के निरीक्षण पर, मैं देख रहा हूं कि आईएमएचओ स्प्रिंग फ्रेमवर्क का एक बेस्टर्डिज़ेशन है। तुम देखो, जावा टीम इंटरफेस लिए एक से बचने के लिए लगता है, इसलिए हम इस तरह चीजों के साथ अंत:एक गौरवशाली कारखाने के रूप में वसंत; क्या यह स्वीकार्य है?

@Autowired 
private SomeConcreteFinalClass _myField; 

कोई स्प्रिंग विन्यास, कोई सेम परिभाषित है, कोई मौका नहीं है कि मैं अलग-थलग युक्त वस्तु परीक्षण कर सकते हैं । यह अनिवार्य रूप से वसंत के ऊपरी हिस्से के साथ एक एनोटेशन-आधारित कारखाना है।

क्या मैं बाहर की रेखा हूं, या यह मक्खियों को मारने के लिए हाथी बंदूक का उपयोग करने जैसा है? मुझे टीम पर हर कोई एक वास्तविकता जांच लेना है, यह सोचता है कि यह पूरी तरह से स्वीकार्य है।

कई मामलों में इन एनोटेटेड कारखानों जटिल प्रसंस्करण कक्षाओं में दिखाई देती हैं जो अलग परीक्षण से अत्यधिक लाभान्वित होंगी। हालांकि टीम परीक्षण पर फहराती है।

मुझे कोई रहस्य नहीं है, मुझे उम्मीद है। अगर मेरे पास एक ठोस वर्ग है, तो यह एक इंटरफ़ेस के पीछे नहीं है, और ऑब्जेक्ट को "सेटअप" करने के लिए कोई भी वसंत बीन नहीं है, तो यह निश्चित रूप से एक गौरवशाली कारखाना है जिसे कोड की 10 पंक्तियों के साथ कार्यान्वित किया जा सकता है।

स्प्रिंग का उपयोग सिस्टम में किसी अन्य तरीके से नहीं किया जाता है; यह बात है।

मेरे लक्ष्यों अभी:

  • संस्थान एक परीक्षण नीति
  • टीम को शिक्षित घटक अलगाव
  • ले जाएँ इन Autowired क्षेत्रों इंटरफेस के पीछे

मैं के गुण पर अनुमान है कि अंतिम सवाल यह है: यदि हम टेस्टिन नहीं हैं तो इन क्षेत्रों को स्वचालित रूप से रखने के लिए कोई लाभ है जी या ढांचे का उपयोग किसी भी अन्य तरीके से। अगर निर्भरता अपरिवर्तनीय है तो मैं भी new ऑब्जेक्ट चाहता हूं।

+0

बेशक: एक हाथी बंदूक हाथी के आकार के उत्परिवर्ती मक्खियों को मारने के लिए हथियार का विकल्प है –

उत्तर

4

मैं आपसे सहमत हूं कि यह वसंत क्या कर सकता है इसका दुरुपयोग है (वसंत के अनुसार क्या करना चाहिए)। क्या वह व्यक्ति जिसने एप्लिकेशन को इस तरह से डिजाइन किया है? इस तरह एक आवेदन के निर्माण के लिए उनके औचित्य को सुनना दिलचस्प होगा।

1

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

और हाँ, मैं मानता हूं कि इंटरफेस इंजेक्शन नहीं करना थोड़ा व्यर्थ है। मैं यूनिट परीक्षण की एक बड़ी मात्रा में नहीं करना चाहता हूं, लेकिन फिर भी, मैं बाद में कार्यान्वयन को बदलने में कोई लचीलापन खो दूंगा (या अलग-अलग तैनाती में कक्षाओं के विभिन्न कार्यान्वयन - जैसे एकीकरण परीक्षण)।

4

यह निश्चित रूप से सीमित है कि यह संभव है, लेकिन यह समय की कुल बर्बादी नहीं है।

चूंकि प्रश्न में टाइप final है, इसलिए इसे पृथक परीक्षण के लिए आसानी से मॉक-अप नहीं किया जा सकता है।

हालांकि, उस प्रकार के उदाहरण अभी भी उनके गुणों के माध्यम से अत्यधिक विन्यास योग्य हो सकते हैं।वसंत का उपयोग एक उदाहरण को इंजेक्ट करने के लिए जो कि रनटाइम पर ठीक से कॉन्फ़िगर किया गया है, युक्त वर्ग को बेहद सरल बनाता है। कक्षा स्प्रिंग पर भरोसा करने के लिए अपनी जिम्मेदारियों पर ध्यान केंद्रित कर सकती है ताकि इसे सहयोगियों के साथ प्रदान किया जा सके।

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

+0

यदि प्रकार अंतिम है, तो विस्तारशीलता और टेस्टेबिलिटी के अलगाव के लिए एक इंटरफ़ेस हो सकता है। कई मामलों में ये एनोटेटेड फैक्ट्रियां जटिल प्रसंस्करण कक्षाओं में दिखाई देती हैं जो अलग परीक्षण से अत्यधिक लाभान्वित होंगी। वे परीक्षण पर भी फहराया। एक उचित काउंटर तर्क के लिए –

+0

+1। –

+0

"परीक्षण पर फहराया," आह? मुझे डर है कि मैं वहां उनकी रक्षा में बात नहीं कर सकता! ;) – erickson

1

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

यदि आप इस तथ्य के बारे में शिकायत कर रहे हैं कि उस वस्तु का स्थिर प्रकार इंटरफ़ेस नहीं है तो आपके पास एक बिंदु हो सकता है। लेकिन कोड की उस पंक्ति से बताना भी मुश्किल है। क्या यह वास्तव में एक इंटरफेस के बिना एक सेवा या भंडार वर्ग है? यदि हां, तो मैं सहमत हूं। यदि नहीं, तो मुझे और जानना होगा।

यदि आपकी टीम परीक्षण पर फहराती है, तो यह बहुत खराब है। मैंने सोचा होगा कि वसंत के कारणों में से एक परीक्षण परीक्षण की सुविधा होगी।

आपके पास एक बिंदु हो सकता है, लेकिन मैं आपके मूल प्रश्न से निश्चित नहीं हो सकता। शायद आप अधिक विस्तार से संपादित कर सकते हैं।

यदि यह एक उदाहरण है कि आप अपने साथियों के साथ संवाद कैसे करते हैं, तो शायद वे उचित होंगे अगर उन्होंने कहा कि आपने स्वयं को बहुत अच्छी तरह से समझाया नहीं है। सुनिश्चित करें कि आप यहां स्वयं-उन्नयन के लिए बाहर नहीं हैं।

+0

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

+1

"मैं आम तौर पर पर्याप्त जानकारी प्रदान करता हूं" - इस बार नहीं। और केवल आपके साथियों को आपको सार्थक प्रतिक्रिया दे सकती है कि आपके संचार कौशल पर्याप्त हैं या नहीं। मेरे बारे में क्या सोचते हैं और उनके बारे में अधिक चिंता करें। मैं सुझाव दूंगा कि आप यह मानने के बजाय इसे प्राप्त करने पर विचार करें कि वे गलत हैं। – duffymo