कुशल एंड्रॉइड स्टूडियो प्रोजेक्ट संरचना

कार्यक्षेत्र का आयोजन किया

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

नोट: नीचे दिए गए सभी उदाहरणों में मैं क्लासिक एंड्रॉइड एमवीसी दृष्टिकोण का उपयोग करता हूं, इसलिए कोई भी इसे प्राप्त कर सकता है। हालांकि, एक ही सिद्धांत MVVM या अन्य वास्तुकला दृष्टिकोण के साथ भी काम करते हैं।

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

1. रिसोर्स फाइल्स नामकरण पैटर्न का उपयोग करें

JetBrains के उत्पाद जैसे IntelliJ Idea, Android Studio, WebStorm और अन्य के पास एक बेहतरीन इंडेक्सेशन और सर्च टूल है। लेकिन इसका अधिकतम लाभ उठाने के लिए - आपको अपनी तरफ से कुछ काम करना चाहिए। आपको अपनी खोज की दक्षता बढ़ाने के लिए अपनी फ़ाइलों के नामकरण पैटर्न को निर्दिष्ट करने की आवश्यकता है।

ऐसा करने के लिए आपको उन खोजशब्दों या दायरे के बारे में सोचना चाहिए जहाँ इन संसाधनों का उपयोग किया जाता है। उदाहरण के लिए, आप पैटर्न को परिभाषित कर सकते हैं जैसे: {पैरेंट / एक्टिविटी} _ [एलिमेंट (एस)] _ {नाम} _ {स्टेट}, यह आपको यह लुक देगा:

संसाधन फाइलें उदाहरण नामकरण पैटर्न

कभी-कभी पढ़ना मुश्किल हो सकता है (आमतौर पर जब कई समान-उद्देश्य वाली फाइलें होती हैं), लेकिन इससे आपको बहुत फायदा होता है जब आप चीजों को खोजते हैं:

आइडिया पर्यावरण का उपयोग कर खोज

इसलिए आपको वास्तव में सटीक संसाधन फ़ाइल नामों को याद करने की आवश्यकता नहीं है, लेकिन इसके बारे में कुछ तथ्य जान लें: सामान्य स्थिति में लॉगिन स्क्रीन पर बटन। आप अन्य नाम पैटर्न के बारे में सोच सकते हैं जो आपकी खोज को अधिक कुशल बना देगा, किसी को छवि फ़ाइलों और इतने पर चयनकर्ताओं को अलग करने के लिए img या छवि जोड़ना पसंद है।

2. एक ही फोल्डर में एक्टिविटी- या फ्रैगमेंट- रिलेटेड सोर्स फाइल्स रखें

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

स्रोत फ़ाइलें संगठन का उदाहरण

3. जब संभव हो तो मास्टर क्लास में उपवर्गों और इंटरफेस की घोषणा करें

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

उपवर्गों और इंटरफेस का उदाहरण

जैसा कि आप यहाँ देख रहे हैं हम निजी सांख्यिकीसंचारी वर्ग को परिभाषित कर सकते हैं जो केवल हमारे वर्ग तर्क में उपयोग किया जाता है, और सार्वजनिक सांख्यिकीकॉलबैक जो केवल हमारी कक्षा के लिए बाहरी संचार का समर्थन करने के लिए उपयोग किया जाता है। प्रत्येक वर्ग और इंटरफ़ेस को अपनी फ़ाइल में परिभाषित करने के बजाय - हमने इसे एक ही संदर्भ के कारण एक साथ रखा, ताकि हमारी परियोजना संरचना को हल्का और पठनीय रखा जा सके।

4. श्रोता और अन्य अनाम वर्ग

यह लचीला होना अच्छा है, क्योंकि आपका एप्लिकेशन विकसित हो सकता है और आवश्यकताएं बदल सकती हैं। एक दिन आपके लॉगिन फॉर्म में 3 स्वतंत्र तत्व होते हैं: 1 बटन और 2 एडिटटेक्स्ट - पूरी तरह से अलग इंटरफ़ेस के साथ कस्टम व्यू बन सकते हैं।

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

संपत्ति के रूप में इनलाइन बेनामी कक्षाएं

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

5. "बुद्धिमानी से चुनें" जहां वेक्टर / एक्सएमएल ड्रॉबल्स का उपयोग करना है

इसकी क्षमता और संदिग्ध हो सकती है।

पहले मल्टी-सोर्स ड्रॉबल्स पर वेक्टर इमेज और Xml ड्रॉबल्स का उपयोग करने के निर्विवाद फायदे हैं:

  • केवल 1 फ़ाइल के साथ काम करने के लिए, बजाय mdpi / hdpi / xhdpi / और इसी तरह
  • परिवर्तन करने की क्षमता (स्ट्रोक रंग, पृष्ठभूमि, आदि)

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

1. एक संसाधन फ़ाइल के साथ काम करने के लिए।

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

आप Android Studio (https://plugins.jetbrains.com/plugin/7658-android-drawable-importer) के लिए एंड्रॉइड ड्राएबल आयातक प्लगिन का उपयोग करके कई स्रोत छवियों को तेजी से आयात कर सकते हैं;

और अंतिम लेकिन कम से कम नहीं - आप आसानी से आइडिया के टूल (रिफैक्टर -> नाम बदलें) का उपयोग करके अपने मल्टी-सोर्स ड्रॉबल्स का नाम बदल सकते हैं;

2. परिवर्तन करने की क्षमता

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

इसलिए जैसा कि आप देखते हैं, हमेशा वेक्टर इमेज या xml ड्रॉबल्स आपकी प्रभावशीलता को नहीं बढ़ाते हैं।

पढ़ने के लिए धन्यवाद! मुझे आशा है कि आप इसे उपयोगी पाएंगे या कम से कम यह आपको कुछ नए विचार देगा। इसे कम रखने की कोशिश की, लेकिन अगर आप कुछ और विशेष उदाहरण चाहते हैं और / या सुझाव हैं - तो कृपया मुझे नीचे टिप्पणी में बताएं!