2009-08-13 12 views
12

मैं अक्सर कक्षा का नाम कैसे तय करने के साथ संघर्ष करता हूं। इतना नहीं है क्योंकि वर्ग का उद्देश्य अस्पष्ट है, लेकिन xxx *** नियंत्रक ***, xxx *** प्रबंधक ***, xxx *** जानकारी ***, xxx *** सहायक *** जैसे नामों के कारण , xxx *** तक *** आदि कि मैं हर जगह देखता हूं।कक्षा नामकरण अराजकता

यदि मेरे पास एक वर्ग है जो HTTP पर कुछ सामान अपलोड करता है, तो मैं इसे HttpUploader या उन पंक्तियों पर कुछ नाम देता हूं। मैंने कई उदाहरण देखे हैं जहां एक समान वर्ग को HttpUploadManager, HttpTransmissionController, HttpUploadHelper और इसी तरह नामित किया जा रहा है।

मैं कंट्रोलर, प्रबंधक, सूचना इत्यादि का उपयोग करने के लिए उलझन में हूं क्या कोई लेख या पुस्तक है जो मुझे कक्षाओं का बेहतर नामक बनने में मदद कर सकती है?

पुनश्च: इसके अलावा, HttpSender की तरह एक नाम बहुत कमजोर लगता है जब HttpTransmissionController या HttpDispatchManager की तुलना में: पी

+1

मेरी वृत्ति xxxManager, xxxController आदि से दूर रहना है जहां संभव हो। मैंने हाल ही में यह उद्धरण देखा: "कंप्यूटर विज्ञान में केवल दो कठिन चीजें हैं: कैश अमान्यता और नामकरण चीजें।" - फिल कार्लटन –

+0

@ डेवी स्ट्रॉस एमवीसी सम्मेलन किसी भी नियंत्रक नाम के बाद 'नियंत्रक' डालने का निर्देश देता है। –

+0

@George Stocker तुम मुझे सवाल (xxxController, xxxManager, xxxInfo, xxxHelper, xxxUtil) के सभी उदाहरण के :-) मिल गया है मुझे लगता है कि कम से कम xxxController संदिग्ध है। अन्य अक्सर मूल्य से अधिक भ्रम जोड़ते हैं। –

उत्तर

4

एसओ पर लोकप्रिय राय प्रबंधक, सूचना, हेल्पर, या यूटिल जैसे प्रत्यय के उपयोग से बचने के लिए प्रतीत होती है।

देखें: Smelly Class Names और Class names that need refactoring

+0

लिंक के लिए धन्यवाद! – akirekadu

12

नामकरण कठिन है, इसलिए चिंता न करें कि आप संघर्ष, क्योंकि हम सभी करते हैं। और मेरा विश्वास करो, यह कभी आसान नहीं होता!

व्यक्तिगत रूप से संपूर्ण नियंत्रक/प्रबंधक/सहायक/उपयोग/जो भी प्रत्यय चीज़ के साथ मैं नियम का उपयोग करता हूं कि यदि यह एक सम्मेलन है (उदाहरण के लिए एएसपी.नेट एमवीसी के लिए यह सम्मेलन है कि नियंत्रक वर्ग का नाम "नियंत्रक" में समाप्त होता है) फिर प्रत्यय का उपयोग करें, अन्यथा इससे बचने के लिए नरक की कोशिश करें। HttpUploadManager की तुलना में मुझे HttpUploader नामक कक्षा होगी।

नामकरण के बारे में सबसे महत्वपूर्ण बात यह है कि वर्ग को जो कुछ भी कहना चाहिए वह करना चाहिए। यदि यह एक वर्ग है जो HTTP का उपयोग करके कुछ अपलोड करता है तो HttpUploader इसका वर्णन करता है। HttpUploadManager जैसे फैंसी नाम का उपयोग करना मुझे यह नहीं बताता कि यह क्या करता है। क्या यह चीज खुद ही अपलोड करता है? क्या यह कई चीजों के अपलोड का प्रबंधन करता है? कक्षा/विधि/जो भी हो, के उद्देश्य का वर्णन करते हुए, मैं चीजों को यथासंभव सरल रखना चाहता हूं।

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

2

आप अधिक वर्णनात्मक (रंगीन?) प्रत्यय की एक सूची को भी देखने का प्रयास कर सकते हैं: ManagerManager

सामान्य सलाह (कक्षा के नाम के लिए कक्षा का नाम) में समस्या यह है कि कक्षाओं में से कई चीजें असली वास्तविक दुनिया के बराबर नहीं होती हैं, और इसलिए हमारी पारंपरिक शब्दावली अच्छी तरह से मेल नहीं खाती है। उदाहरण के लिए, एक HttpUploader को किसी अन्य वर्ग के साथ जोड़ा जा सकता है जो अपलोड करने में मदद करता है, कुछ समन्वय कर रहा है, या (मुझे यह कहने की हिम्मत है?) अपलोडिंग का प्रबंधन करता है। सॉफ़्टवेयर में इस प्रकार का मध्यस्थ समन्वय सामान्य है, लेकिन इसका वर्णन करने वाले शब्द इतने अस्पष्ट हैं कि वे घृणा करते हैं।

2

पुस्तक Clean Code पर परिवर्तनीय नामों पर एक पूर्ण अध्याय है। अच्छी चीज़।

+0

धन्यवाद। बस इसे आदेश दिया। – akirekadu

5

यदि आपको कोई नाम चुनने में कठिनाई हो रही है, तो आप ClassNamer से परामर्श कर सकते हैं।

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