आज मेरे साथ एक सहयोगी के साथ एक चर्चा हुई।क्या आप अपनी परियोजना में अपनाए गए तृतीय पक्ष पुस्तकालयों को लपेटना चाहिए?
जब भी आप किसी तृतीय पक्ष लाइब्रेरी का उपयोग करते हैं तो वह दावा करता है, आपको हमेशा इसके लिए एक रैपर लिखना चाहिए। तो आप बाद में चीजों को हमेशा बदल सकते हैं और अपने विशिष्ट उपयोग के लिए चीजों को समायोजित कर सकते हैं।
मैं शब्द हमेशा से असहमत हैं, चर्चा log4j के बारे में पैदा हुई और मुझे लगता है कि अच्छी तरह से log4j का परीक्षण किया है और समय साबित एपीआई और कार्यान्वयन, और सब कुछ विचारणीय का अनुमान किया विन्यस्त किया जा सकता है और कुछ भी आप लपेट चाहिए वहाँ का दावा किया। यहां तक कि यदि आप लपेटना चाहते हैं तो कॉमन-लॉगिंग और log5j जैसे साबित रैपर हैं।
एक और उदाहरण जिसे हमने अपनी चर्चा में छुआ है हाइबरनेट है। मैंने दावा किया कि इसमें लपेटने के लिए एक बहुत बड़ी एपीआई है। इसके अलावा इसमें एक स्तरित एपीआई है जो आपको इसकी आवश्यकता होने पर इसके अंदर ट्विक करने देती है। मेरे दोस्त ने दावा किया कि वह अब भी मानता है कि इसे लपेटा जाना चाहिए, लेकिन उसने एपीआई के आकार के कारण ऐसा नहीं किया (यह सहकर्मी हमारे वर्तमान प्रोजेक्ट में मुझसे ज्यादा अनुभवी है)।
मैं this दावा किया, और कहा कि रैपिंग विशिष्ट मामलों में ही किया जाना चाहिए:
- क्या आप वाकई कैसे पुस्तकालय अपनी आवश्यकताओं फिट होगा
- आप केवल एक पुस्तकालय का एक छोटा सा हिस्सा उपयोग करेगा (में नहीं हैं जो मामला आप केवल अपने एपीआई का एक हिस्सा बेनकाब कर सकते हैं)।
- आप पुस्तकालय के एपीआई या कार्यान्वयन की गुणवत्ता के बारे में सुनिश्चित नहीं हैं।
मैंने यह भी बनाए रखा कि कभी-कभी आप लाइब्रेरी के बजाय अपना कोड लपेट सकते हैं। उदाहरण के लिए, अपने डेटाबेस से संबंधित कोड को डीएओ परत में डालने के बजाय, सभी हाइबरनेट को पूर्ववत रूप से लपेटने के बजाय।
ठीक है, अंत में यह वास्तव में एक प्रश्न नहीं है, लेकिन आपकी अंतर्दृष्टि, अनुभव और राय की अत्यधिक सराहना की जाती है।
+1 "हमेशा" – BryanD
शब्द के साथ समस्या उठाने के लिए defacto log4j wrapper के लिए SLF4J देखें। आप जो एपेंडर चाहते हैं वह हमेशा आपके द्वारा उपयोग किए जाने वाले किसी अन्य लॉगर के साथ होता है :( –