लाइब्रेरी डिज़ाइन करते समय मुझे किन दिशानिर्देशों का पालन करना चाहिए?


11

मैं एक Arduino परियोजना पर काम कर रहा हूं जो Uno का उपयोग कर रहा है। इस परियोजना में महत्वपूर्ण मात्रा में कोड है। मैं एक पुस्तकालय बनाना चाहूंगा और बाद में इसे साझा भी कर सकता हूं। पुस्तकालय को डिजाइन करते समय मुझे किन दिशानिर्देशों का पालन करना चाहिए?


क्या यह सामान्य प्रश्न का अधिक हिस्सा नहीं है, शायद स्टैक ओवरफ्लो के लिए - ऐसा लगता है कि इसमें Arduino हिस्सा अप्रासंगिक है। उस ने कहा, यह एक Arduino की स्मृति-बाधाओं के लिए उपयोगी टिप्स का उत्पादन कर सकता है।

जवाबों:


12

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

बेसिक टिप्स

पिन मैप

एक बुनियादी पिन मानचित्र प्रदान करें जो आपकी लाइब्रेरी उम्मीद कर रही है। पिन मैपिंग को स्थिर न रखें बल्कि उपयोगकर्ता को आसानी से बदलाव करने दें।

वर्किंग लाइब्रेरी

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

बेसिक रीडमी

बहुत स्पष्ट रूप से बताएं कि कौन से बोर्ड (लाइब्रेरी) को लाइब्रेरी के लिए डिज़ाइन किया गया था, जिस पर यह परीक्षण किया गया था, और यह काम करने के लिए किस बोर्ड (एस) से अपेक्षित है। यहां उल्लिखित हर बोर्ड की पीढ़ी (संस्करण) निर्दिष्ट करें।

इंटरफेस

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

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

विशेष कार्य

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

व्यस्त प्रतीक्षा

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

टिप्पणियाँ

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

संगति

सुनिश्चित करें कि सब कुछ, यहां तक ​​कि टिप्पणियाँ, फ़ाइलों .hऔर .cppफ़ाइलों के अनुरूप हैं ।

केवल एक फ़ाइल के भीतर संबंधित कार्यों को रखें। कुछ छोटे, लेकिन तार्किक रूप से सुसंगत होने के कारण, मॉड्यूल इसमें सब कुछ के साथ एक बड़ी फ़ाइल से बेहतर है।


उन्नत युक्तियाँ

विस्तृत रीडमी

लाइब्रेरी, उसकी क्षमताओं, किसी भी समस्या या कीड़े, और बुनियादी उपयोगिता का वर्णन करते हुए एक स्पष्ट रीडमी फ़ाइल लिखें। ऊपर वर्णित प्रत्येक इंटरफ़ेस को परिभाषित करने और समझाने के लिए एक अलग फ़ाइल का उपयोग करें।

निर्देशिका संरचना

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

लाइसेंसिंग

लाइसेंस जोड़ना सुनिश्चित करें।

संस्करण नियंत्रण

GCS या SVN जैसे VCS टूल का उपयोग करें। इससे किए गए परिवर्तनों को देखना बहुत आसान हो जाएगा, पुराने संस्करणों में वापस आना, कोड के कारण त्रुटि, और यहां तक ​​कि दूसरों के साथ सहयोग करना।


पिन मैप क्या है?
क्रिस एंडरसन

2

AshRj का जवाब बहुत अच्छा है - मेरे पास इसे जोड़ने के लिए सिर्फ 2 बिंदु हैं।

बिंदु 1: प्रलेखन

AshRj ने एक विस्तृत रीडमी लिखने की सिफारिश की। जब तक यह अच्छा अभ्यास हो सकता है, यह बड़ी पुस्तकालयों के साथ जल्दी से हाथ से निकल सकता है - वास्तव में, यहां तक ​​कि कुछ हजार लाइनों (जो वास्तव में बहुत ज्यादा नहीं है) पर, एक रीडमी का लगभग कोई लाभ नहीं होगा। मेरी सिफारिश एक कदम आगे जाने और C ++ के लिए Javadocs के बराबर का उपयोग करने की होगी - जैसा कि यह उत्तर बताता है (यह स्टैक ओवरफ्लो पर है), प्रलेखन प्रबंधनीय रखने और हाथ में रखने के लिए Doxygen एक बहुत ही उपयोगी उपकरण है (कोई भी व्यक्ति संपादित नहीं करना चाहता है) 10K लाइन रीडमी फ़ाइल ...)

बिंदु 2: निर्देशिकाएँ

एशराज के जवाब के विपरीत, हमेशा निर्देशिकाओं का उपयोग करें। यहां तक ​​कि अगर आपके पास केवल 10 फाइलें हैं, तो शायद सिर्फ 7 या 8 के साथ भी। मुझे पता है कि यह थोड़ा बेवकूफ लगता है, लेकिन यह आपके काम का भविष्य-प्रमाण है, और यदि आप जल्दी शुरू नहीं करते हैं, तो आप केवल गड़बड़ कर देंगे फ़ाइलें। निर्देशिकाएँ केवल बड़ी परियोजनाओं के लिए नहीं हैं - छोटे लोगों को भी उनका उपयोग करना चाहिए। बस याद रखें कि C ++ (डी-फैक्टो Arduino भाषा) में, निर्देशिकाओं को नजरअंदाज कर दिया जाता है जब एक लाइब्रेरी से फाइलें शामिल होती हैं - वे केवल एक कोड-प्रबंधन उपकरण के रूप में मौजूद होती हैं।

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