क्या एक सामान्य पुस्तकालय एक अच्छा विचार है?


16

मैंने हमेशा सोचा है कि एक "सामान्य पुस्तकालय" एक अच्छा विचार था। उसके द्वारा मेरा मतलब है कि एक पुस्तकालय जिसमें आम कार्यक्षमता है जो अक्सर कुछ अलग अनुप्रयोगों द्वारा आवश्यक होती है। इसके परिणामस्वरूप कम कोड दोहराव / अतिरेक होता है।

मैंने हाल ही में एक लेख पढ़ा (अब नहीं मिल सकता है) जिसने कहा कि यह वास्तव में एक बुरा विचार है और यह कहने के लिए चला गया कि यह "ए-पैटर्न" था

जबकि इस दृष्टिकोण के लिए अपडाउन हैं। परिवर्तन और प्रबंधन परिवर्तन का अर्थ है इस लाइब्रेरी का उपयोग करने वाले ऐप्स के सुइट के लिए प्रतिगमन परीक्षण।

मैं अपनी नई (गोलंग) परियोजना के लिए एक प्रकार से अटक गया हूं। कोड डिडुप्लीकेशन मुझ पर वर्षों से अंकित किया गया है, लेकिन मुझे लगता है कि मुझे इस बार इसके लिए प्रयास करना चाहिए।

यह लिखते समय, मैं यह सोचना शुरू कर रहा हूं कि यह "आम काम" दृष्टिकोण वास्तुकला पर स्कीमिंग का परिणाम है? शायद मेरे डिजाइन को अधिक विचार की आवश्यकता है?

विचार सुनने के इच्छुक हैं।


2
मेरे 2 सेंट ... यदि आपको सिस्टम में किसी एक का उपयोग करने के लिए सामान्य एपीआई में परिवर्तन करना है, तो उस एपीआई या लाइब्रेरी को आम पुस्तकालय नहीं है
राजा अन्बझगन

1
मुझे लगता है कि कोड दोहराव और युग्मन के बीच एक मौलिक व्यापार बंद है। आपका प्रश्न इसका एक प्रमुख उदाहरण है। । संतुलन तुम दोनों शायद वातावरण पर निर्भर करेगा अपने कोड अंततः में निष्पादित करेंगे के बीच हड़ताल
जोएल Cornett

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

2
किसी ने अपाचे को फोन किया और इस पागलपन को ठीक किया। अपाचे कॉमन
Laiv

जवाबों:


21

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

मैंने इस कार्रवाई को तब देखा जब मैं एक संपूर्ण व्यावसायिक इकाई के मूल्य के पहले बंदरगाहों के लिए 64-बिट सिस्टम के लिए कोड (ज्यादातर मेरे लिए नया) बन गया और हमारे निर्माण और पैकेजिंग के लिए एक पूर्ण ओवरहाल कर रहा था, जिसमें से बहुत कुछ किया जा रहा था। हाथ से और कभी-कभी बहुत अच्छी तरह से नहीं। * हम बनाने के लिए गए थे जो हमने अनुप्रयोगों के ढेर से बाहर भेज दिया था, जहां ग्राहक कहेंगे, "मुझे एक ऐसी प्रणाली चाहिए जो ए, बी, डी और एफ, प्लस चीजें एम। और एन कि आप अभी तक नहीं करते हैं और थोड़ा अलग गोंद उन सभी को एकीकृत करता है। " आम तौर पर जो कुछ भी था, वह एक जंक-ड्रॉअर लाइब्रेरी थी, जो कुछ दशकों से चली आ रही थी, ** लोगों द्वारा सोची गई सभी चीजों को फिर से उपयोग में लाया जाना चाहिए। एक लंबी कहानी को छोटा करने के लिए, पुस्तकालय में कोड का एक अंश wasn '। हम बहुत सारे मूल्यवान समय का निर्माण कर रहे थे और उन निर्भरता को बनाए रखते हुए बस इतना ही सामान्य पुस्तकालय स्थापित करेंगे, इसलिए नहीं कि हमें वास्तव में उनकी आवश्यकता थी।

नैतिक यह है कि पुस्तकालयों को कक्षाओं की तरह व्यवहार करने की आवश्यकता है और बहुत अधिक जिम्मेदारियों के साथ अतिभारित नहीं होना चाहिए। अपने लीनियर बीजगणित कार्यों के साथ एक ही लाइब्रेरी में अपने JSON पार्सर को न रखें, भले ही आप जो भी प्रोग्राम लिख रहे हैं वह दोनों का उपयोग करता है।

उन्हें असतत रखने के बहुत सारे फायदे हैं, जिनमें से सबसे बड़ा है कि यह आपके डेवलपर्स और पैकर्स को एक विस्तृत लेखांकन के साथ आने के लिए मजबूर करता है कि उनके अपने उत्पादों को वास्तव में कबाड़ दराज और इसके साथ आने वाले सामानों के बजाय क्या चाहिए। जब आप निर्मित पैकेजों का उपयोग करके एक सिस्टम सेट करते हैं, तो ठीक-ठीक निर्भरता सुनिश्चित करती है कि केवल आवश्यक भाग ही स्थापित हो। यहां तक ​​कि अगर आप अपने भंडार की उपेक्षा करते हैं और पुराने, crufty सामान को संकलित करना जारी रखते हैं, तो ऐसा कुछ भी नहीं है जो अब लीक में उपयोग किए जाने वाले जहाज में नहीं है।

बेशक, अपवाद हैं libcकि एक पुस्तकालय में कार्यों की एक पूरी बहुत रटना। यह उन मामलों में से एक है जहां इसे करने के लाभों को उस तरीके से अंजाम दिया जा सकता है जो हॉल को नीचे झुकाते हुए नेत्रहीन रूप से झुकाते हैं जो जोर देकर कहते हैं कि एक्स के अलावा कोई अन्य तरीका हमेशा बुरा अभ्यास है।


* इस प्रक्रिया में, मैंने एक द्विआधारी को उजागर किया था जो चारों ओर से पारित हो गया था और छह वर्षों में खरोंच से नहीं बदला गया था।

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


1
मेरे अंगूठे का नियम यह है, यदि आप अपने पुस्तकालय का नाम "आम" जैसा रखना चाहते हैं, तो आप परेशानी में पड़ सकते हैं।
कार्ल बेज़ेलफेल्ट

9

शर्मनाक ढंग से मैंने एक "आम" लाइब्रेरी शुरू की, जिसका नाम कुछ दशक पहले टीम के माहौल में रखा गया था। मैं वास्तव में गतिशीलता को तब समझ नहीं पाया था, जब कुछ ही महीनों में शिथिल-समन्वित टीम सेटिंग में क्या हो सकता है।

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

और यह काफी अच्छी तरह से शुरू हुआ। हमने common/math*दिनचर्या के एक गणित पुस्तकालय ( ) के साथ शुरू किया था, जिसका उपयोग हम सभी दैनिक आधार पर करते थे, क्योंकि हम कंप्यूटर ग्राफिक्स में काम कर रहे थे जो अक्सर रैखिक बीजगणित पर भारी होता था। और चूंकि हम अक्सर सी कोड के साथ हस्तक्षेप कर रहे थे, इसलिए हम find_indexइसके विपरीत कुछ उपयोगी उपयोगिता कार्यों पर सहमत हुएstd::findC ++ में, एक अनुक्रम में पाए जाने वाले तत्व के एक इंडेक्स को पुनरावृत्‍ति के बजाय लौटाएगा, जिसने नकल की कि हमारा C कैसे काम करता है - इस प्रकार की चीजें - थोड़ा सा उदार लेकिन कम से कम और व्यापक रूप से सभी के लिए परिचित और व्यावहारिक बने रहने के लिए पर्याप्त रूप से उपयोग किया जाता है , और तत्काल परिचितता एक अत्यंत महत्वपूर्ण मानदंड है क्योंकि मैं इसे "सामान्य" या "मानक" कुछ भी बनाने की कोशिश में देखता हूं क्योंकि यह वास्तव में "सामान्य" है, इसके व्यापक रूप में इसके बारे में यह परिचित गुण होना चाहिए गोद लेने और दैनिक उपयोग।

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

लेकिन मुझे इस बात पर बहस करने से भी मिला कि इस लाइब्रेरी में क्या जाना चाहिए और क्या नहीं कि जिसे "आम" माना जाता है वह बहुत ही व्यक्तिपरक विचार में आसानी से बदल सकता है यदि आप एक बहुत ही कठिन नियम को निर्धारित नहीं करते हैं कि "सामान्य" क्या है हर कोई दैनिक आधार पर उपयोगी खोजने के लिए क्या करता है। मानकों के किसी भी ढील और यह जल्दी से चीजों से हर किसी को अपमानित करता है हर कोई एक दैनिक डेवलपर के लिए उपयोगी पाता है एक एकल डेवलपर उपयोगी पाता है जो किसी और के लिए फायदेमंद होने की संभावना हो सकती है, और उस बिंदु पर पुस्तकालय एक उदार गड़बड़ में तेजी से घटता है ।

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

तो वहाँ कीड़े के सभी प्रकार के डिब्बे हैं, कम से कम एक कम-समन्वित टीम के वातावरण में, एक पुस्तकालय जिसमें महत्वाकांक्षाएं व्यापक हैं और सामान्य रूप से "सामान्य रूप से उपयोग किए जाने वाले सामान" के रूप में। और जबकि अंतर्निहित समस्या अन्य सभी के ऊपर ढीला समन्वय हो सकता है, कम से कम कई पुस्तकालयों के लिए एक अधिक विलक्षण उद्देश्य की सेवा करना है, जैसे कि एक पुस्तकालय गणित दिनचर्या प्रदान करने का इरादा रखता है और कुछ नहीं, संभवतः इसके संदर्भ में उतने महत्वपूर्ण रूप से अस्वीकार नहीं करेगा। एक "आम" पुस्तकालय के रूप में डिजाइन शुद्धता और निर्भरता। तो पूर्वव्यापी में मुझे लगता है कि पुस्तकालयों के पक्ष में गलती करने के लिए बेहतर होगा जो कि अधिक स्पष्ट डिजाइन इरादे हैं। मैंने उन वर्षों में भी पाया है कि उद्देश्य में संकीर्ण और प्रयोज्यता में संकीर्ण मौलिक रूप से भिन्न विचार हैं।

इसके अलावा, मैं कम से कम थोड़ा अव्यवहारिक और देखभाल शायद सौंदर्यशास्त्र के बारे में बहुत अधिक है, लेकिन जिस तरह से मैं एक पुस्तकालय की गुणवत्ता के बारे में अपने विचार को महसूस करता हूं (और शायद "सौंदर्य") को उसके सबसे कमजोर लिंक से भी अधिक आंका जाता है। इसकी सबसे मजबूत, इसी तरह से कि अगर आपने मुझे दुनिया में सबसे अधिक स्वादिष्ट भोजन पेश किया लेकिन, उसी प्लेट पर, वहाँ पर कुछ सड़ रहा है जो वास्तव में बुरी तरह से बदबू आ रही है, मैं पूरी प्लेट को अस्वीकार करना चाहता हूं। और अगर आप मेरे बारे में उस तरह से हैं और ऐसा कुछ बनाते हैं जो सभी प्रकार के परिवर्धन को आमंत्रित करता है जैसा कि कुछ "सामान्य" कहा जाता है, तो आप अपने आप को उस अनुरूप प्लेट को देखने के लिए पा सकते हैं, जो पक्ष में कुछ सड़ रहा है। तो इसी तरह मुझे लगता है कि यह अच्छा है अगर एक पुस्तकालय को व्यवस्थित और नामित किया जाए और उसे इस तरह से प्रलेखित किया जाए कि वह ऐसा न करे ' t समय के साथ अधिक से अधिक परिवर्धन को आमंत्रित करें। और यह कि आपकी व्यक्तिगत रचनाओं पर भी लागू हो सकता है, क्योंकि मैंने निश्चित रूप से यहाँ और वहाँ कुछ सड़ा हुआ सामान बनाया है, और अगर यह सबसे बड़ी प्लेट में नहीं जोड़ा जा रहा है, तो यह बहुत कम "taints" करता है। छोटी, बहुत विलक्षण पुस्तकालयों में चीजों को अलग करने से बेहतर कूट कूट की प्रवृत्ति होती है, यदि केवल इतना ही गुण हो कि सब कुछ युग्मित करना शुरू करना कहीं कम सुविधाजनक हो जाता है।

कोड डिडुप्लीकेशन मुझ पर वर्षों से अंकित किया गया है, लेकिन मुझे लगता है कि मुझे इस बार इसके लिए प्रयास करना चाहिए।

आपके मामले में मैं जो सुझाव दे सकता हूं, वह कोड कटौती पर आसान लेना है। मैं खराब-परीक्षण किए गए, त्रुटि-प्रवण कोड या इस प्रकार के किसी भी चीज़ के बड़े स्निपेट को कॉपी और पेस्ट करने के लिए नहीं कह रहा हूं, या बड़ी मात्रा में गैर-तुच्छ कोड की नकल कर रहा हूं जिसमें भविष्य में परिवर्तन की आवश्यकता होने की संभावना है।

लेकिन विशेष रूप से यदि आप एक "सामान्य" पुस्तकालय बनाने की मानसिकता के हैं, जिसके लिए मैं आपकी इच्छा को व्यापक रूप से लागू, अत्यधिक पुन: प्रयोज्य, और शायद आदर्श रूप से कुछ ऐसा बनाना चाहता हूं जो आपको आज से एक दशक बाद ही मिल जाए। , तो कभी-कभी आपको इस मायावी गुणवत्ता को प्राप्त करने के लिए कुछ दोहराव की भी आवश्यकता हो सकती है। क्योंकि दोहराव वास्तव में एक decoupling तंत्र के रूप में काम कर सकता है। यह ऐसा है जैसे अगर आप किसी वीडियो प्लेयर को MP3 प्लेयर से अलग करना चाहते हैं, तो आपको कम से कम बैटरी और हार्ड ड्राइव जैसी कुछ चीजों की नकल करनी होगी। वे इन चीजों को साझा नहीं कर सकते हैं या फिर वे अविभाज्य रूप से युग्मित हैं और एक-दूसरे का स्वतंत्र रूप से उपयोग नहीं किया जा सकता है, और उस समय लोगों को डिवाइस में कोई दिलचस्पी नहीं हो सकती है यदि वे सब करना चाहते हैं तो एमपी 3 प्ले करें। लेकिन कुछ समय बाद जब आप इन दो उपकरणों को अलग कर देते हैं, तो आप पा सकते हैं कि एमपी 3 प्लेयर एक अलग बैटरी डिज़ाइन या वीडियो प्लेयर की तुलना में छोटे हार्ड ड्राइव से लाभ उठा सकता है, जिस बिंदु पर आप अब कुछ भी दोहरा नहीं रहे हैं; इस अंतः निर्भर उपकरण को दो अलग-अलग में विभाजित करने की अनुमति देने के लिए शुरू में दोहराव के रूप में क्या शुरू हुआ, स्वतंत्र डिवाइस बाद में डिजाइन और कार्यान्वयन के लिए निकल सकते हैं जो अब बिल्कुल बेमानी नहीं हैं।

यह एक पुस्तकालय का उपयोग करने के दृष्टिकोण से चीजों पर विचार करने के लायक है। क्या आप वास्तव में उपयोग करना चाहेंगेएक पुस्तकालय जो कोड दोहराव को कम करता है? संभावना है कि आप ऐसा नहीं करेंगे क्योंकि जो करता है वह स्वाभाविक रूप से अन्य पुस्तकालयों पर निर्भर करेगा। और वे अन्य पुस्तकालय अपने कोड को डुप्लिकेट करने से बचने के लिए अन्य पुस्तकालयों पर निर्भर हो सकते हैं, और इसी तरह, जब तक कि आपको कुछ बुनियादी कार्यक्षमता लोड करने और ऑडियो फ़ाइल चलाने जैसी केवल 50 बुनियादी पुस्तकालयों को आयात / लिंक करने की आवश्यकता नहीं हो सकती है, और यह बहुत ही बेकार है । इस बीच अगर इस तरह की ऑडियो लाइब्रेरी ने जानबूझकर अपनी आज़ादी हासिल करने के लिए कुछ चीज़ों को यहाँ-वहाँ डुप्लिकेट करने के लिए चुना, तो नए प्रोजेक्ट्स में इस्तेमाल करना इतना आसान हो जाता है, और संभावना है कि जीतने के बाद से इसे लगभग अपडेट करने की ज़रूरत नहीं होगी ' टी को अपने आश्रित बाहरी पुस्तकालयों को बदलने के परिणामस्वरूप बदलने की आवश्यकता है जो ऑडियो लाइब्रेरी की आवश्यकता से बहुत अधिक सामान्यीकृत उद्देश्य को पूरा करने की कोशिश कर सकते हैं।

इसलिए कभी-कभी यह जानबूझकर थोड़ा सा नक़ल करने के लिए चुनना होता है (होश में, आलस्य से बाहर कभी नहीं - वास्तव में परिश्रम से बाहर) एक पुस्तकालय को डिकूप करने के लिए और इसे स्वतंत्र बनाने के लिए क्योंकि उस स्वतंत्रता के माध्यम से, यह व्यावहारिक प्रयोज्यता की एक विस्तृत श्रृंखला प्राप्त करता है और यहां तक ​​कि स्थिरता (कोई और अधिक साहसी कपलिंग)। यदि आप सबसे पुन: प्रयोज्य पुस्तकालयों को डिज़ाइन करना चाहते हैं जो आपको एक परियोजना से अगले और पिछले कुछ वर्षों में बनाएंगे, तो इसके दायरे को न्यूनतम करने के लिए, मैं वास्तव में यहां थोड़ा सा नकल करने पर विचार करने का सुझाव दूंगा। और स्वाभाविक रूप से इकाई परीक्षण लिखें और सुनिश्चित करें कि यह वास्तव में पूरी तरह से परीक्षण किया गया है और यह क्या कर रहा है पर विश्वसनीय है। यह केवल उन पुस्तकालयों के लिए है जिन्हें आप वास्तव में एक बिंदु तक सामान्य करने के लिए समय लेना चाहते हैं जो एक ही परियोजना से बहुत आगे निकल जाता है।


3

पुस्तकालयों में डालने पर विचार करने वाले कार्यों की तीन अलग-अलग श्रेणियां हैं:

  1. सभी के लिए पुन: उपयोग करने लायक सामग्री।
  2. केवल आपके संगठन के लिए पुन: उपयोग करने लायक सामग्री।
  3. पुन: उपयोग करने लायक नहीं है।

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

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

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


1

लगभग सभी भाषाओं में एक समान / मानक पुस्तकालय है, इसलिए इसे मोटे तौर पर एक अच्छे विचार के रूप में मान्यता प्राप्त है। पहिया का पुन: आविष्कार करने के बजाय विभिन्न कार्यों के लिए तीसरे-आंशिक रूप से पुस्तकालयों का उपयोग करना भी आमतौर पर एक अच्छा विचार माना जाता है, हालांकि प्रत्येक मामले में लागत / लाभ और पुस्तकालय की गुणवत्ता का मूल्यांकन किया जाना चाहिए।

फिर "सामान्य उपयोगिताओं" पुस्तकालयों का उपयोग एक व्यक्ति डेवलपर या संस्था द्वारा किया जाता है अन्यथा असंबंधित परियोजनाएं। यह एक प्रकार का पुस्तकालय है जिसे एक प्रतिमान माना जा सकता है। इस मामले में, मैंने देखा है, ये पुस्तकालय केवल मानक पुस्तकालयों या गैर-मानक और बुरी तरह से प्रलेखित तरीके से अधिक प्रसिद्ध तीसरे पक्ष के पुस्तकालयों से कार्यक्षमता को दोहराते हैं।


these libraries just replicate functionality from standard librariesयह पूरी तरह से एक बुरी बात नहीं है, जावास्क्रिप्ट में आपने पुस्तकालयों को जोड़ा है जो पुराने जेएस इंजनों पर समर्थन जोड़ने के लिए पहले से ही मौजूदा चीजों को लागू करते हैं, आपके पास पुराने एसडीके आदि के लिए एंड्रॉइड सपोर्ट लिब भी है।
svarog

@ प्रश्न: क्या आप "पॉलीफ़िल्स" के बारे में सोच रहे हैं जो पुराने इंजनों के लिए नए मानकों में कार्यक्षमता का अनुकरण करता है जो इसे मूल रूप से समर्थन नहीं करता है? मुझे खुद को लिखने का कोई कारण नहीं दिखता, क्योंकि इन उद्देश्यों के लिए प्रसिद्ध ओपन-सोर्स लाइब्रेरी उपलब्ध हैं।
जैक्सबी

0

टीमों में साझा की जाने वाली अधिकांश पुस्तकालयों से वे हल करने की तुलना में अधिक समस्याएं पैदा करते हैं। "नरक का मार्ग अच्छे आशय से तैयार किया जाता है।"

अपवाद वे लाइब्रेरी हैं जो नीचे के अधिकांश को संतुष्ट करते हैं:

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

विशिष्ट (गैर-स्टार्टअप) कंपनियों के अंदर, ऊपर दी गई शर्तों में से कोई भी टीमों के बीच साझा पुस्तकालयों के लिए मौजूद नहीं है। ऐसा इसलिए है क्योंकि अधिकांश कंपनी टीमों को उत्पादों को वितरित करने के लिए भुगतान किया जाता है, न कि पुस्तकालयों को। कुछ कंपनियों के पास Google की मोनोरेपो जैसी सफल साझा करने की रणनीतियाँ हैं, लेकिन यह बुनियादी ढांचे के निर्माण और परीक्षण में बहुत अधिक निवेश के साथ आता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.