2010-10-26 16 views
7

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

मेरा प्रश्न है: क्या मुझे अपनी लाइब्रेरी निर्भरता मुक्त रखना चाहिए? क्या ऐसा करने के कोई फायदे हैं?

उत्तर

0

प्रो:

  • आपका पुस्तकालय
  • कोई अद्यतन नरक (अपने कोड की तरह पुस्तकालय की जरूरत है (संभावना है कि आप केवल किसी भी निर्भरता की पूर्ण कार्यक्षमता का एक छोटा सा हिस्सा उपयोग कर रहे हैं) बहुत छोटे हो जाएगा सी, संस्करण 2, उत्पाद एक्स को आपके कोड और लाइब्रेरी सी, संस्करण 1 की आवश्यकता है)।
  • आप किसी दूसरे व्यक्ति की सनक को अपने चम्मच मोड़ (कहते हैं कि पुस्तकालय आप 2.x के लिए 1.x से चला जाता है -> आप अपने कोड अपडेट करना होगा) की जरूरत नहीं होगी

कोन:

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

पीएस: यदि आप लॉगिंग का समर्थन करना चाहते हैं, तो अपने कोड में slf4j जोड़ें; यह एक 30 केआईबीबी एपीआई है जो आपके कोड के उपयोगकर्ताओं को वहां किसी भी लॉगिंग फ्रेमवर्क का उपयोग करने की अनुमति देता है। commons-logging का उपयोग करें।

1

ऐसा करने के कई फायदे हैं, कम से कम किसी भी ऑपरेटिंग सिस्टम पर चलाने की क्षमता नहीं।

अपनी लाइब्रेरी को बहुत निर्भरता मुक्त रखने का एक तरीका है, इसे उपयोग से पहले आरंभ करने की आवश्यकता है। फिर आप your_lib_init() में करेंगे; फ़ंक्शन बैकएंड लॉगिंग करने के लिए फ़ंक्शन पॉइंटर लेते हैं। इसका मतलब है कि बैकएंड को किसी भी प्लेटफॉर्म पर फिर से लिखा जा सकता है।

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

5

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

आप उपयोगकर्ताओं को कॉन्फ़िगरेशन फ़ाइल या रन टाइम डिस्कवरी द्वारा कॉन्फ़िगर करने के लिए उपयोगकर्ताओं को एक नया कॉन्फ़िगर करने के लिए नल लॉगर का उपयोग करना आसान बना सकते हैं।

1

Java Logging का उपयोग करें। यह जेआरई/जेडीके का हिस्सा है इसलिए कोई बाहरी libs की आवश्यकता नहीं है।

examples देखें।

+2

ठीक है, जुल के बारे में सबसे अच्छी बात यह है कि इसमें शामिल है। लगभग हर दूसरे लॉगिंग ढांचे बेहतर है (उपयोग करने में आसान, अनुकूलित, कॉन्फ़िगर, तेज, अधिक शक्तिशाली)।यह भी ध्यान रखें कि यदि आप जूल का उपयोग करते हैं, तो आपकी लाइब्रेरी का उपयोग करने वाले अधिकांश लोगों को इसके बजाय उपयोग किए जाने वाले लॉगिंग फ्रेमवर्क पर लॉग इन करने के लिए जूल को हरा देना होगा। –

+0

आप बिल्कुल सही हैं। –

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