एक बहुत अच्छा सवाल-जवाब सरल नहीं है। विचार करने के लिए कई चीजें। यहां तक कि मेरे अनुभव से कुछ राय यहां दी गई हैं।
आम बनाम परियोजना स्थानीय कोड को कॉपी
एक महत्वपूर्ण निर्णय है कि क्या "आम" पुस्तकालय कोड है कि (अपनी कंपनी के "पुन: उपयोग के पुस्तकालय") एक केंद्रीय स्थान से स्वचालित रूप से अद्यतन किया जाता है का उपयोग करना है, या क्या रखने के लिए एक परियोजना-स्थानीय प्रति।
यह this SO question में विस्तार से चर्चा की है।
एक केन्द्रीय पुस्तकालय का लाभ यह है कि काम एक बार किया कई परियोजनाओं को लाभ हो सकता है। एक परियोजना-स्थानीय प्रतिलिपि के साथ कठिनाई यह है कि किसी भी बग फिक्स और सुधार केंद्रीय पुस्तकालय में वापस योगदान नहीं दिया जाता है, और केंद्रीय पुस्तकालय में किसी भी बग फिक्स को आपके प्रोजेक्ट में नहीं लाया जा सकता है।
लेकिन एक केन्द्रीय पुस्तकालय का उपयोग कर के साथ एक संभावित कठिनाई यदि उनके विशेष पर लोगों को अपनी परियोजना के अनुरूप करने के एक अनियंत्रित तरीके से इसे संशोधित है, और यह अनजाने में अन्य परियोजनाओं टूट जाता है। मैंने व्यक्तिगत रूप से, "सामान्य" कोड में देखा है जो #ifdefs से भरा हुआ है और नियमित रूप से अन्य परियोजनाओं को तोड़ देता है।
आम कोड से बाहर उर्फ केंद्रीय पुन: उपयोग पुस्तकालय अच्छा मूल्य प्राप्त करने के लिए:
पुस्तकालय:
- अच्छी तरह से परिभाषित आवश्यकताओं, एपीआई, और इकाई परीक्षण
- परियोजना विशेष से बचना चाहिए होना आवश्यक है कोड; यह सामान्य प्रयोजन होना चाहिए
- सफाई से परियोजना-विशिष्ट सेटिंग की स्थापना (इस, एपीआई के हिस्से के रूप में देखा जा सकता प्रभावी ढंग से)
- संस्करण संख्याओं और सुधारों के साथ, एक औपचारिक रिहाई प्रक्रिया होनी चाहिए के लिए एक तंत्र होना चाहिए, मुद्दों ट्रैक किया जाना चाहिए।
व्यक्तिगत परियोजनाओं:
- स्वचालित रूप से और आँख बंद करके "नवीनतम" नहीं मिलना चाहिए, लेकिन एक निर्दिष्ट संस्करण संख्या के साथ एक विशेष "रिलीज" प्राप्त करने के लिए सक्षम होना चाहिए। फिर परियोजनाओं पर नियंत्रण होना चाहिए यदि वे एक नए संस्करण में अपडेट करते हैं। परियोजना स्पष्ट रूप से ट्रैक करने में सक्षम होना चाहिए, "हम लाइब्रेरी xyz के संस्करण 1.2.3 का उपयोग कर रहे हैं"।
- यदि संभव हो तो लाइब्रेरी कोड को "फोर्किंग" से बचना चाहिए। जैसे लाइब्रेरी कोड में प्रोजेक्ट-विशिष्ट "फीचर्स" जोड़ने से बचें।
- लाइब्रेरी कोड
- पर किसी स्थानीय संशोधन को ट्रैक करना चाहिए, यदि संभव हो तो केंद्रीय पुस्तकालय में तय होने के लिए बग को लाइब्रेरी बग के रूप में माना जाना चाहिए। कंपनी को केंद्रीय पुस्तकालय में उन्हें ठीक करने के लिए प्रक्रियाएं होनी चाहिए, लाइब्रेरी का परीक्षण अपने स्वयं के यूनिट टेस्ट सूट (शायद भविष्य में बग को पकड़ने के लिए यूनिट परीक्षण में सुधार करना)। फिर आवश्यकतानुसार केंद्रीय पुस्तकालय का एक नया संस्करण जारी करें, और यदि अन्य परियोजनाएं फिट हों तो अन्य परियोजनाओं पर तैनात करें।
एक कंपनी जगह में ऐसी प्रक्रिया नहीं है, तो एक परियोजना सिर्फ कोड का एक टुकड़ा की एक स्थानीय प्रति (जैसे कि, पिछले एक परियोजना से नकल) और फिर बनाना चाहिए पूर्ण परियोजना स्थानीय जिम्मेदारी लेने उसके बाद से। आपको अभी भी उस स्थिति में पुन: उपयोग से कुछ लाभ मिल रहा है, क्योंकि आप इसे स्क्रैच से पुनः लिख नहीं रहे हैं।
परियोजना विशिष्ट विन्यास
कोड परियोजना-विशिष्ट विन्यास की जरूरत है, आदर्श है कि संभव के रूप में कोड की के रूप में छोटे एक हिस्सा रखा जाना चाहिए - स्रोत फ़ाइलों का एक गुच्छा के माध्यम से बिखरे हुए नहीं। आदर्श रूप में, एक ही शीर्षलेख फ़ाइल। लेकिन काफी संभवतः एक सी फ़ाइल भी (कहें, अगर आपको कुछ लुक-अप टेबल परिभाषित करने की आवश्यकता है)। विकल्पों को अच्छी तरह से टिप्पणी के साथ पुस्तकालय एक टेम्पलेट प्रदान करना चाहिए।
यह कैसे किया जा सकता है इसका एक अच्छा उदाहरण के लिए, Micrium से जीन लैब्रोसे द्वारा µC/OS-II RTOS (book) देखें।
स्रोत
2009-11-26 23:50:34