Android नामकरण सम्मेलन


81

मैं एक संपूर्ण एंड्रॉइड नामकरण सम्मेलन सुझाव की तलाश कर रहा हूं। मुझे यहाँ थोड़ा सा मिला:

http://source.android.com/source/code-style.html#follow-field-naming-conventions

जो कहते हैं:

  • गैर-सार्वजनिक, गैर-स्थिर फ़ील्ड नाम m से शुरू होते हैं।
  • स्थैतिक क्षेत्र के नाम s से शुरू होते हैं।
  • अन्य क्षेत्र कम केस लेटर से शुरू होते हैं।
  • सार्वजनिक स्थैतिक अंतिम क्षेत्र (स्थिरांक) हैं ALL_CAPS_WITH_UNDERSCORES

फिर भी मैं एंड्रॉइड के सभी पहलुओं को कवर करने के लिए कुछ अधिक व्यापक खोज रहा हूं:

  • लेआउट और विचारों को नाम कैसे दें,
  • कैसे मेनू का नाम है
  • कैसे नाम शैलियों के लिए
  • डेटाबेस तालिकाओं (एकवचन, बहुवचन) और क्षेत्रों के नाम कैसे दें
  • आदि

अगर कुछ आम तौर पर स्वीकृत सुझाव है तो मैं उसका पालन करना पसंद करूंगा। सभी एसडीके अपने तरीके से जाने लगते हैं इसलिए मुझे इसे करने के लिए एंड्रॉइड तरीके में विशेष रुचि है।


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

Google कोडिंग शैली पर ध्यान न दें, इसकी पर्याप्त व्याख्या नहीं की गई है ... और एक पूर्ण वाक्य भी नहीं। कोई भी अंतर्राष्ट्रीय कोडिंग कन्टैंट नहीं हैं। चूंकि प्रत्येक कंपनी / जीआरपी का अपना कोडिंग कन्टक्ट होता है। अपना प्रयोग करें।
यौषा अलायबौ

जवाबों:


88

रिबोट के Android दिशानिर्देश मानक नामकरण सम्मेलनों का एक अच्छा उदाहरण हैं:

XML फ़ाइलों के लिए नामकरण सम्मेलन:

activity_<ACTIVITY NAME>.xml - for all activities
dialog_<DIALOG NAME>.xml - for all custom dialogs
row_<LIST_NAME>.xml - for custom row for listview
fragment_<FRAGMENT_NAME>.xml - for all fragments

Xml फ़ाइलों में घटक / विजेट के लिए नामकरण सम्मेलन:

के लिए सभी घटकों एक्स गतिविधि गतिविधि नाम सभी घटक उपसर्ग या जैसे छोटे नाम होना चाहिए के साथ प्रारंभ होना btn के लिए Button उदाहरण के लिए, प्रवेश गतिविधि घटक के लिए नाम निम्नलिखित की तरह होना चाहिए।

activity_login_btn_login
activity_login_et_username
activity_login_et_password

प्रमुख घटकों का संक्षिप्त नाम:

Button - btn
EditText - et
TextView - tv
ProgressBar - pb
Checkbox - chk
RadioButton - rb
ToggleButton - tb
Spinner - spn
Menu - mnu
ListView - lv
GalleryView - gv
LinearLayout -ll
RelativeLayout - rl

6
यह वास्तव में मेट्टर करता है .. जब तक आप (या आप सभी कंपनी) 1 शैली को अपनाते हैं जो परवाह करता है कि यह कहां से आता है। मुझे अब तक 4 या उससे कम सरल एंड्रॉइड ऐप पसंद आए और मैंने खुद को लगभग इसी तरह का सम्मेलन बना लिया। मुझे लगता है कि यह आप सभी की जरूरत है। मैं 'ए' का प्रयोग 'एक्टिविटी' के बजाए करता हूं और इसी तरह से यह बहुत लंबा है
सीनेकज

क्या गतिविधि के नाम के साथ घटकों के नाम को शुरू करना वास्तव में आवश्यक है? मेरा मतलब है कि आप संबंधित लेआउट फ़ाइल में वैसे भी नामों का उल्लेख करेंगे।
सज्जनी

1
यह वास्तव में आवश्यक नहीं है लेकिन जब आपकी परियोजना उस समय बढ़ रही है तो यह बहुत मददगार होगी
प्रवीण भोसले

5
MainActivity + activity_main? मुझे पता है कि यह मानक है, लेकिन किसने इस बकवास का आविष्कार किया? अधिकांश अप्रत्यक्ष, विशेष रूप से क्यों नाम लंबे समय तक, जब टुकड़े जगह में आते हैं।
ब्रेनरे

व्यक्तिगत रूप से मुझे यह बहुत संगत नहीं लगता है
जेथ्रो 15

28

यह सबसे अच्छा अभ्यासों का एक उत्कृष्ट संग्रह है: https://github.com/futurice/android-best-practices

यहाँ मैं क्या उपयोग है। मैं उस लिंक से भी कॉपी करूँगा।

वस्तु नामकरण

  • Google दिशानिर्देशों के अनुसार mया sउपसर्ग का उपयोग न करें । मैंने सालों तक रोका है और मुझे उनके बिना यह आसान लगता है। आईडीई आपको बताएगा कि आप कब कुछ निजी या स्थिर उपयोग कर रहे हैं; यह एक अप्रचलित सम्मेलन की तरह लगता है।
  • CONSTANTS की शुरुआत कैप से होती है
  • परिवर्णी शब्द को केवल पहले अक्षर को बड़ा करना चाहिए। उदाहरण के लिए, functionUrlऔर unitId। नहीं है unitID
  • वस्तु के प्रकार के साथ उपसर्ग। उदाहरण के लिए एक TextView जिसमें एक नाम होगा tvName। एक पासवर्ड के साथ एक EditView होगा etPass
  • यदि यह आमतौर पर किसी गतिविधि में केवल एक बार उपयोग किया जाता है (जैसे सूची दृश्य), तो इसे कॉल करने से डरो मत lv
  • यदि यह एक ऑब्जेक्ट प्रकार नहीं है तो इसे फ़ंक्शन द्वारा नाम दें। उदाहरण के लिए, यदि यह एक स्ट्रिंग है जो आईडी रखती है, तो इसे नाम दें, स्ट्रिंग idनहीं। आईडीई आपको बताएगा कि यह एक स्ट्रिंग या फ्लोट या लंबा कब है।
  • इसे सुपाच्य रखें। Passइसके बजाय कुछ का उपयोग करें Password
  • XML के भीतर, नाम बिना किसी राजधानियों, जैसे tv_nameऔर के साथ अंडरस्कोर होना चाहिएet_pass
  • android:idXML में पहली विशेषता के रूप में रखें ।

फ़ाइल नामकरण

  • प्रकार के साथ उपसर्ग लेआउट यह है। उदाहरण के लिए fragment_contact_details.xml, view_primary_button.xml, activity_main.xml
  • कक्षाओं के लिए, उन्हें फ़ोल्डरों में वर्गीकृत करें, लेकिन प्रत्ययों का उपयोग करें। उदाहरण के लिए, /activities/MainActivity.javaया /fragments/DeleteDialog.java। मेरे फ़ोल्डर गतिविधियों, टुकड़े, एडेप्टर, मॉडल और बर्तन हैं
  • एडेप्टर को यह कहना चाहिए कि उनका उपयोग कब और कैसे किया जाता है। इसलिए चैटएक्टिविटी के लिए एक सूची दृश्य एडेप्टर कहा जा सकता है ChatListAdapter

एक पैलेट के रूप में color.xml और dimens.xml

  • रंग के लिए, जैसे नाम का उपयोग करें gray_light, नहीं button_foreground

  • डिमेन्स के लिए, जैसे नामों का उपयोग करें spacing_large, नहीं button_upper_padding

  • यदि आप अपने बटन रंग या पैडिंग के लिए कुछ विशिष्ट सेट करना चाहते हैं, तो एक शैली फ़ाइल का उपयोग करें।

strings.xml

  • अपनी स्ट्रिंग्स को नाम की चाबियों के साथ रखें, जो नामस्थान से मिलती जुलती हों, और दो या दो से अधिक कुंजी के मान को दोहराने से न डरें।

  • का उपयोग करें error.message.network, नहीं network_error

विचार

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

उपसर्ग उन लोगों के लिए महान हैं, "उस TextView का नाम क्या है?" क्षण।

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

XML आईडी अक्सर लोअरकेस में होती हैं और केवल अंडरस्कोर का उपयोग करती हैं क्योंकि हर कोई इसे इस तरह से करता है।


वर्गों के नाम के बारे में क्या। जैसे: ActivityMainया MainActivity। तुम किसकी सिफारिश करना चाहोगे? मुझे लगता है कि यह समझ में आता है से जाने के लिए: कक्षा: NameActivity, लेआउट: name_activity, घटक: nameactivity_component_name। इसका एक उदाहरण MainActivity, main_activity, mainactivity_btn_cancel
Jethro

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

मैं इस समय कैमरा 2 उदाहरण देख रहा हूं, और मुझे वास्तव में परवाह नहीं है कि mBackgroundHandlerआदि कहां से आता है, इसलिए उनका नामकरण backgroundHandlerबाईं ओर महत्वपूर्ण जानकारी डालता है। यदि आपको इसकी आवश्यकता है, तो मापदंडों में ' ' प्रत्यय और स्थानीय चर के लिए '_' प्रत्यय को जोड़ने से आप नेत्रहीन और मानसिक रूप से अंडरस्कोर छोड़ सकते हैं जब तक कि आपको उन पर ध्यान केंद्रित करने की आवश्यकता न हो।
विल्क

13

संगति
हर कोई (जब तक कि टीमों में काम कर) अपने स्वयं के सम्मेलन होगा और जो एक आप चुनते बात नहीं करता है। यह सुनिश्चित करना कि यह पूरे अनुप्रयोग के दौरान सुसंगत है मायने रखता है।


संरचना
व्यक्तिगत रूप से, मैं इस तरह एक नामकरण सम्मेलन का उपयोग करता हूं क्योंकि यह कक्षा के नाम से घटक तक चलता है और पूरे xml में संगत है:

  • कक्षा :<ClassName>
  • गतिविधि :<ClassName>**Activity**
  • के बारे में :classname_activity
  • घटक आईडी :classname_activity_component_name

इस का एक उदाहरण होगा OrderActivity.class, order_activity.xml, order_activity_bn_cancel। सभी XML नोटिस लोअरकेस में है।


ABBREVIATING LAYOUTS
यदि आप कोड टियरियर रखने के लिए छोटे नामों का उपयोग करना चाहते हैं; फिर एक और तरीका यह हो सकता है कि लेआउट के रूप में XML के सभी नामों को संक्षिप्त किया जाए ।

इसका एक उदाहरण होगा ऑर्डरअक्टिविटी .class: ord_act .xml, ord_act _bt_can, ord_act _ti_nam, ord_act _tv_nam। मैं नामों को तीन में तोड़ता हूं लेकिन यह निर्भर करता है कि आपके पास कितने समान नाम हैं


घटक प्रकार abbreviating
जब घटक प्रकार abbreviating इन संगत भी रखने का प्रयास करें। मैं आमतौर पर घटक प्रकार के लिए दो अक्षर और नाम के लिए तीन अक्षर का उपयोग करता हूं। हालांकि कभी-कभी नाम आवश्यक नहीं होगा यदि लेआउट में उस प्रकार का एकमात्र तत्व है। आईडी का सिद्धांत अद्वितीय होना है

  • घटक आईडी :nam_act_component_nam

घटक प्रकार ABBREVIATIONS (यह सूची दो अक्षरों को दर्शाती है जो बहुत सारे हैं)
फ़्रेम लेआउट: fl
रैखिक लेआउट: ll
तालिका लेआउट: tl
टेबल पंक्ति: tr
ग्रिड लेआउट: gl
सापेक्ष लेआउट: rl

पाठ दृश्य: टीवी
बटन: bt
चेक बॉक्स: cb
स्विच: स्व
टॉगल बटन: tb
छवि बटन: ib
छवि दृश्य: iv
प्रगति बार: pb
शोध बार: sb
रेटिंग बार: आरबी
स्पिनर: sp
WebView: wt
संपादित पाठ: et

रेडियो समूह: rg
सूची दृश्य: lv
ग्रिड दृश्य: gv
विस्तार योग्य सूची दृश्य: el
स्क्रॉल दृश्य: sv
क्षैतिज स्क्रॉल दृश्य: hs
खोज दृश्य: * se
टैब होस्ट: th
वीडियो दृश्य: vv
डायलर फ़िल्टर: df

शामिल करें: आईसी
Fragment: fr
कस्टम दृश्य (अन्य): cv


2
रेडियो बटन = रेटिंग बार?
मिच

8

मुझे नहीं लगता कि इसके लिए अभी कोई सम्मेलन हुआ है। प्रत्येक कंपनी के अपने नियम होते हैं और मुझे नहीं लगता कि कोई भी इसके बारे में ज्यादा परवाह करता है।

मेरे लिए, मैं नाम को संदर्भ के लिए बाध्य होना पसंद करता हूं। उदाहरण के लिए, यदि "मेनऐक्टिविटी" नामक एक गतिविधि है, तो इसका लेआउट नाम "main_activity.xml" होगा, और इस गतिविधि से जुड़े प्रत्येक संसाधन के लिए, मैं एक उपसर्ग "main_activity" जोड़ता हूं, ताकि मुझे पता चले कि मैं इसका उपयोग करता हूं। वही इस गतिविधि के लिए उपयोग की जाने वाली आईडी के लिए जाता है।

उन नामकरण का उपयोग करने का कारण यह है कि उन्हें ढूंढना आसान है, यदि आवश्यक हो तो हटा दें, और यदि आप एंड्रॉइड लाइब्रेरी का उपयोग करते हैं तो उन्हें दूसरों के साथ प्रतिस्थापित नहीं किया जाएगा क्योंकि नाम काफी अद्वितीय हैं।

मैं सार्थक नाम देने के लिए यथासंभव प्रयास करता हूं, इसलिए आप आमतौर पर "listView" या "imageView2" आईडी के रूप में नहीं देखेंगे, लेकिन "contactListView" और "contactImageView" जैसे कुछ। समान नाम (या समान) जावा कोड के अंदर भी चर से मेल खाएगा, ताकि इसे ढूंढना आसान हो सके।

तो, संक्षेप में, मेरी युक्तियां हैं:

  • नामों के अंदर संख्या से बचने की कोशिश करें। वे आमतौर पर ज्यादा मतलब नहीं है, और दिखाते हैं कि आपने यूआई डिजाइनर के लिए केवल ड्रैग एंड ड्रॉप का उपयोग किया है।

  • डेमो, POCs और यहाँ सवालों के लिए, अपने आप को नामकरण के बारे में चिंता न करें।

  • संसाधनों के सभी नामों (आईडी सहित) के लिए एक उपसर्ग जोड़ने की कोशिश करें कि वे किस संदर्भ से संबंधित हैं, और विशिष्टता प्राप्त करने के लिए।

  • जहां भी संभव हो सार्थक नाम दें।


2

नए एंड्रॉइड एक्लिप्स प्लगइन्स आपके द्वारा उल्लिखित कुछ फाइलों को बनाते हैं जब आप एक नया प्रोजेक्ट बनाते हैं। उस से, नामकरण कुछ इस तरह है:

layout/activity_main.xml
menu/activity_main.xml
...

मैंने उदाहरण के साथ इस योजना का अनुसरण किया

layout/fragment_a.xml
layout/fragment_b.xml
...

तो यह सामान्य से लेकर विस्तृत तक पैकेज नामों के साथ कुछ है। यह स्वच्छ छँटाई के लिए भी अनुमति देता है।


1

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

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

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

कुछ उदाहरण:

  • एम के साथ उपसर्ग वर्ग चर, और _अलग शब्दों के साथ सभी टोपियां स्थिर फाइनल चर बनाते हैं । किसी भी चीज को कम दायरे वाले वेरिएबल से उपसर्ग न करें।

  • यूआई माता-पिता के बाद नाम लेआउट, उदाहरण के लिए act_main.xml, frg_detail.xml, itm__act_main__list1.xml, एक गतिविधि के लिए MainActivity, एक टुकड़ा DetailFragment, एक के लिए आइटम लेआउट ListViewमें MainActivityआईडी के साथ list1क्रमश:।

  • नाम तत्व आईडी का xml लेआउट में जैसे: lsv__act_main__list1एक सूची दृश्य के लिए और btn__act_main__submitएक `बटन तत्व के लिए। इससे उन्हें ऑटो पूर्ण के साथ ढूंढना बहुत आसान हो जाता है।


thx - मेरे लिए कोडिंग कन्वेंशन वास्तव में शक्तिशाली आईडीई के युग में व्यर्थ नहीं हैं, बस मेरा इस पर ध्यान है इसलिए मुझे कुछ और आम तौर पर स्वीकृत लोगों को खोजने की उम्मीद है
dorjeduck

कोई बात नहीं। उनके पास अन्य लाभ भी हैं: आप लॉगकैट में एक यूआई दृश्य की आईडी देखते हैं और आईडी से आपको पता है कि यह क्या है, और कोड में इसे कहां देखना है।
एसडी

मैं उपसर्गों के लिए पूरी तरह से योग्य नाम के साथ जाना होगा: activit_main.xml, fragment_main.xml, button_activity_main_submit.xml, आदि
रेमन गार्सिया-पेरेस

0

सम्मेलनों और / या सर्वोत्तम प्रथाओं के नामकरण के रूप में, मैं अक्सर github में ribot / android-दिशानिर्देश रिपॉजिटरी की इस md फ़ाइल का पालन ​​करता हूं, जिसमें प्रोजेक्ट और कोडिंग दिशा-निर्देश हैं।

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