नामकरण कक्षाएं दुर्बल हो जाती हैं [बंद]


9

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

यदि नामकरण बिल्कुल सही नहीं है (मेरे दिमाग में) मैं बस जारी नहीं रख सकता ... मैं सही नाम के साथ आने की कोशिश कर रहा हूं। मैंने छोटे ऐप लिखने की कोशिश की है जो इसका उपयोग यह देखने के लिए करेंगे कि नाम क्या दिखते हैं लेकिन यह मदद नहीं करता है ...

मुझे पता है कि इससे कोई फर्क नहीं पड़ना चाहिए, और यह किसी भी प्रोग्रामिंग मानसिकता के खिलाफ है मान लें कि आप इसे पहले पूरा कर लेंगे ... मैं इसे केवल शक्तिहीन महसूस कर रहा हूं ...

किसी भी सुझाव / विचारों की बहुत सराहना की जाएगी ...


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

11
अनिवार्य उद्धरण: "कंप्यूटर विज्ञान में केवल दो कठिन समस्याएं हैं: कैश अमान्यकरण और नामकरण की बातें।" - फिल कार्लटन
मैके

परिचित भावना। बस हार न मानें, सामान "कॉमन", "यूटिलिटीज", "मैनेजर्स" और "हेल्पर्स" नाम देना शुरू न करें। :)
अर्निस लैप्सा

जवाबों:


10

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

इस तरह की चीज़ को दूर करने के लिए मैं कुछ तरीकों का उपयोग कर रहा हूँ:

  1. पहचानें कि कोई सही समाधान नहीं है, केवल ऐसे समाधान हैं जो दूसरों की तुलना में बेहतर हैं।
  2. प्राथमिकता वाली बातें पहले करें। एक प्रोग्रामिंग असाइनमेंट को पूरा करने की तुलना में इसे पूरा करना अधिक महत्वपूर्ण है।
  3. अन्य लोगों से पूछें। हम सभी के पास हमारे क्षेत्र हैं जहां हम नीचे आते हैं, लेकिन सौभाग्य से अलग-अलग लोग अलग-अलग स्थानों पर आकर बस जाते हैं। शायद कोई और एक अच्छा नाम लेकर आएगा, या आपको बताएगा कि यह वास्तव में कोई फर्क नहीं पड़ता।
  4. एक समय सीमा निर्धारित करें। अपने आप को एक्स मिनट दें वह चीज़ जिसे आप लटकाते हैं, फिर आगे बढ़ें।
  5. खुद से वादा करें कि आप बाद में वापस आएंगे। उन चीजों का एक लॉग रखें जिन्हें आप वापस आना चाहते हैं। इस प्रकार की बहुत सारी समस्याएं स्पष्ट हो जाती हैं, जब आप उन्हें थोड़े समय के लिए छोड़ देते हैं। या तो आप बाद में एक बेहतर नाम के साथ आएंगे, या आप पहचान लेंगे कि यह वास्तव में मायने नहीं रखता।
  6. मान्यता है कि 100 साल के समय में, कोई भी परवाह नहीं करेगा।
  7. इसके विपरीत करें। एक कक्षा को वास्तव में बुरा नाम दें, और देखें कि क्या होता है। यह या तो बेहतर नामों पर समय बिताने की आवश्यकता की पुष्टि करेगा, या आपको यह दिखाएगा कि यह वास्तव में कितना कम है। इसके अलावा, यह आपको जुनूनी दिमाग के सेट से बाहर निकलने में मदद करेगा।
  8. प्रार्थना करना। यह अक्सर मेरे लिए काम करता है।
  9. आप जो करते हैं उसके अलावा खुद को महत्व दें। इस विचार से अलग हो जाएं कि आपका अपना मूल्य पूर्णता प्रदान करने से आता है। जब हम पहचानते हैं कि हमारे पास आंतरिक मूल्य हैं, तो हमारी नौकरियों से काफी अलग हैं, जब हम अपने स्वयं के मानकों को नहीं मापते हैं तो हमें कम शर्म महसूस होती है।
  10. नए शब्द बनाएं और अपनी कक्षाओं, या सिर्फ पुराने उद्देश्य को फिर से लिखने के लिए उनका उपयोग करें। प्रोग्रामिंग एक रचनात्मक प्रक्रिया है, और कभी-कभी हम जिन विचारों को पकड़ते हैं वे नए विचार हैं। नए विचारों को नए नाम चाहिए। "EmployeeTransmogrifier" एक वर्ग के लिए पूरी तरह से मान्य नाम है।
  11. विचार करें कि आप गलत समस्या को हल करने का प्रयास कर रहे हैं। उदाहरण के लिए, यह बहुत अच्छा विचार के बिना एक एपीआई लिखने के लिए एक अच्छा विचार नहीं है कि कॉलर की आवश्यकताएं क्या हैं। यदि आप इस समस्या को हल करते हैं, तो आपके नामकरण की समस्या बहुत आसान हो सकती है।
  12. दोपहर का भोजन। दोपहर का भोजन हमेशा अच्छा होता है।

4
लंच के लिए +1। बहुत से लोग समस्या को हल करने के लिए किसी और चीज के बारे में सोचने के लिए पर्याप्त मूल्य नहीं रखते हैं।
अनहेल्सीप्लमर

कुछ बेहतरीन और सुविचारित
बाते

5

पहले तो

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

दूसरे

क्या आपके पास अपनी कक्षाओं को नाम देने के लिए एक पैटर्न है? शायद कुछ सामान्य नामकरण पैटर्न को देखने की कोशिश करें, उदाहरण के लिए पैटर्न, जो ऊपर दिए गए SRP को संबोधित करने के बाद अनुसरण करना बहुत आसान हो जाता है। क्या आपकी कक्षा XML को पार्स करती है? XMLParser का प्रयास करें। क्या यह XML को पार्स करता है, इनपुट का प्रतिनिधित्व करने के लिए डोमेन मॉडल बनाता है, उन्हें DB में जारी रखता है और फिर ट्विटर पर एक सफलता संदेश पोस्ट करता है? रिफैक्टरिंग की कोशिश करें।

तीसरे

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


अंत में और विषय से थोड़ा दूर

मेरे पास किसी काम में एक लाइटबल्ब पल था जो मैं दूसरे दिन कर रहा था, एक गैर-महत्वपूर्ण प्रणाली को लागू करना, और मैं कक्षाओं के विभिन्न नामकरणों के साथ खेलने के लिए उचित समय बिता रहा था ... कार्यक्षमता के अनुसार अपने इंटरफेस का नाम दें, अपना नाम दें वर्गों के अनुसार उनके विशिष्ट गुणन ... उदाहरण के लिए, आपको IXMLParser और XMLParser लेने का लालच हो सकता है, लेकिन तब क्या होता है जब आपका इनपुट JSON में बदल जाता है? इसके बजाय IInputParser आज़माएं, इस तरह से आप ठोस कक्षाएं XMLParser और JSONParser बना सकते हैं, जो दोनों IInputParser को अलग-अलग तरीकों से कार्यान्वित करते हैं।


हाँ, मैं इस तरह के पल के रूप में अच्छी तरह से किया था ... समस्या यह है कि आप इसे बहुत अच्छा है और आप बस इच्छित कोड कभी नहीं लिख सकते हैं, तीन हमेशा अमूर्त का अनोखा लेआउट है ...
रॉबिन वेस्सी

1

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

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

या कॉफ़ी बनाओ। मशीन में आने से पहले आपके पास यह होगा ...


भयावह रूप से, मुझे उस तरीके से नामांकित सॉफ़्टवेयर का पता है ... कल्पना करने की कोशिश करें कि एक 5 साल बाद जब आप कंपनी में केवल एक ही हैं जो अभी भी जानता है कि "टिम" कौन है।
यौर

0

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


OOAD सिखाने के लिए यह एक सरल, CS101 प्रकार का व्यायाम है । हालांकि, यह किसी भी वास्तविक प्रणाली में कम हो जाता है जो एक प्रोफेसर या पाठ्यपुस्तक लेखक द्वारा विरोध नहीं करता है।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.