2011-02-26 18 views
18

मैं एंड्रॉइड गतिविधियों और अन्य वर्गों के बीच अधिक से अधिक नामकरण संघर्ष में भाग रहा हूं। मैं सोच रहा था कि क्या आप मुझे बता सकते हैं कि आप इनसे कैसे बचते हैं। अफसोस की बात है, मेरी विशेष नामकरण समस्याएं SO पर संबंधित प्रश्नों में शामिल नहीं हैं।एंड्रॉइड गतिविधि नामकरण

पहले उदाहरण

मैं एक गतिविधि है कि खेल के स्तर को दर्शाता है। हालांकि, उस स्तर (पृष्ठभूमि कलाकृति, संस्थाओं आदि) के लिए आवश्यक डेटा एक अलग वर्ग में संग्रहीत किया जाता है। स्वाभाविक रूप से, मैं बाद की कक्षा Level पर कॉल करूंगा। हालांकि, मैं गतिविधि Level भी कॉल करूंगा, क्योंकि यह स्तर प्रदर्शित करता है।

दूसरा उदाहरण

मैं एक गतिविधि है कि वापस नाटकों एक कट दृश्य है। यह मूल रूप से एक पंक्ति में कई छवियों को प्रदर्शित करता है। जानकारी जो छवि को एक अलग वर्ग में कितनी देर तक संग्रहीत किया जाता है, के लिए दिखाया गया है। जैसा कि पिछले मामले में, मैं स्वाभाविक रूप से दोनों वर्ग CutScene पर कॉल करता हूं।

आप इन नामकरण समस्याओं को कैसे हल करेंगे? गतिविधियों का नाम LevelActivity और CutSceneActivity? प्रतिनिधित्व वर्ग LevelModel और CutSceneModel नाम दें? कुछ और?

उत्तर

18

मैं द्वारा उन समस्याओं का समाधान या तो लगाकर या उनके "प्रकार" के साथ कक्षाएं postfixing, जैसे आप अपने प्रश्न के अंत में सुझाव दिया:

  • LevelActivity, GameActivity, MainActivity ...
  • CommentsListAdapter, ...
  • CheckNewCommentsService, ...
  • और इसी तरह।

लेकिन मैं आम तौर पर मॉडल कक्षाएं, जो वस्तुओं है कि जिसमें वह डेटा है कर रहे हैं के लिए एक execption कार्य करें: मैं अभी भी अपने स्तर मॉडल वर्ग Level नाम होता है, और नहीं LevelModel, इंगित करने के लिए मैं जोड़ तोड़ रहा हूँ, और के साथ काम , एक स्तर।


एक अन्य समाधान (अब टाइप करने के लिए ^^)(here देखें) पूरी तरह से योग्य नामों का उपयोग हो सकता है अपनी कक्षाओं जब संदर्भित:

  • com.something.yourapp.activity.Level
  • com.something.yourapp.model.Level

इसके साथ, आप हमेशा जानते हैं कि कौन सी कक्षा वास्तव में आप है एसईडी।

+0

तो क्या आप सभी गतिविधि कक्षाओं में "गतिविधि" प्रत्यय जोड़ते हैं? मुझे यह पसंद है, लेकिन एंड्रॉइड डेवलपर गाइड इंप्रेशन देता है कि Google ऐसा नहीं करता है। क्या आप डरेंगे कि वे इन समस्याओं में भाग नहीं लेते हैं (विश्वास करने में कठोर!) या क्या उनके पास दूसरा समाधान है? – futlib

+0

बस कुछ यादृच्छिक स्टॉक एंड्रॉइड ऐप पर एक नज़र डाली और वे गतिविधियों में भी "गतिविधि" जोड़ते हैं! https://github.com/android/platform_packages_apps_music/tree/master/src/com/android/music – futlib

+0

खुशी है कि आपने स्वयं को उत्तर दिया ;-) –

0

सामान्यतः android application components नाम का सबसे अच्छा तरीका है "घटक प्रकार" प्रत्यय के रूप में जोड़ना। उदाहरण: -

  • LevelActivity (LevelActivity फैली गतिविधि)
  • InboxUpdateService (InboxUpdateService फैली सेवा)
  • ContactsContentProvider (ContactsContentProvide फैली ContentProvider)
  • SMSBroadcastReceiver (SMSBroadcastReceiver फैली BroadcastReceiver)

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

तो, प्रत्यय "गतिविधि" के साथ अपनी गतिविधियां नाम दें।

और कक्षा का नाम दें जो आपके स्तर पर डेटा Level के रूप में डेटा प्रदान करता है।

पास्कल मार्टिन के उत्तर के दूसरे भाग में विरोधाभास में, आप LevelActivity और LevelInfo का एक साथ उपयोग कर सकते हैं। क्योंकि वे स्पष्ट अंतर की पेशकश के रूप में नीचे उद्धृत:

इस तरह से पाठक जानता है कि मतभेद की पेशकश में नाम भेद - रॉबर्ट। सी। मार्टिन, Clean Code

लेकिन प्रत्यय अक्सर संज्ञानात्मक आधार पर अनावश्यक होते हैं। केवल Level शब्द का उपयोग स्पष्ट रूप से उस वर्ग पर निर्भर करता है कि Level स्तर के बारे में जानकारी प्रदान करता है। तो, कक्षा के लिए Level का उपयोग करें जो स्तर के बारे में डेटा प्रदान करता है।

नोट: यदि आप प्रत्यय का उपयोग कर रहे हैं, प्रति अवधारणा एक शब्द चुनें। उदाहरण के लिए: यदि आप जानकारी प्रदान करने वाले वर्गों की पहचान करने के लिए प्रत्यय Info का उपयोग कर रहे हैं तो भ्रम से बचने के लिए केवल Info का उपयोग किया जाना चाहिए (Data या Model)।

संबंधित मुद्दे