C # फ़ाइल के लिए कौन सा नामकरण सम्मेलन है जिसमें कई वर्ग हैं?


20

C # प्रोजेक्ट्स में, हम अक्सर छोटी और कसकर संबंधित कक्षाओं को एक ही .csफाइल में ग्रुप करते हैं । यह अभ्यास बिना किसी वास्तविक कोड के फाइलों के असंख्य के साथ काम करने के घर्षण को कम करता है। फिर भी, क्या उस फ़ाइल का नाम रखने के लिए एक स्थापित अभ्यास है जिसमें कई कक्षाएं हैं?


13
स्पष्ट रूप से मैं बहुत छोटे वर्गों के लिए एक फाइल वन क्लास भी पसंद करता हूं
फेलिस पोलानो

आप इसे उस समूह के नाम के रूप में चुन सकते हैं, जो इन संबंधित संबंधित वर्गों के अंतर्गत आता है।
V4Vendetta 8:23 बजे

शायद वे वर्ग बहुत छोटे हैं? व्यक्तिगत रूप से मैं केवल एक फाइल में कई एनुम्स का समूह बनाता हूं (कभी-कभी क्लास के साथ, कभी-कभी सभी एनम एक साथ, संदर्भ के आधार पर)।
कोनराड मोरव्स्की

@ फेलिस: MSpec :)
ब्रायन

जवाबों:


18

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

MyEnumerable.cs
MyEnumerable.MyEnumerator.cs

संभवतः आप अपने मामले में मल्टीपार्ट फ़ाइल नामों का भी उपयोग कर सकते हैं।


4
एक और विचार। आप Visual Studio प्रोजेक्ट के अंदर कई .cs फ़ाइलों को समूहित कर सकते हैं ताकि वे सभी एक ही नोड में पेड़ के नीचे दिखाई दें (जैसे .Designer.cs फ़ाइलें)। यह आपको संकेत देगा कि कक्षाएं कसकर एक साथ हैं।

6

फ़ाइल में एक से अधिक वर्ग रखने से बचने की कोशिश करें, न कि एक से अधिक सार्वजनिक वर्ग से। कई वर्गों के साथ वर्ग फ़ाइलों का नामकरण करते समय, एक वर्णनात्मक फ़ाइल नाम चुनें।

refrences:


4

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

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

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

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

वास्तविक रूप से, आप पाएंगे कि आपकी परियोजना के जीवनकाल के अंत तक, आपने अपनी फ़ाइलों की कामना की होगी जिसमें केवल एक ही वर्ग और एक अच्छी निर्देशिका / नाम स्थान की संरचना शामिल थी।

चीयर्स,


3

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

मैंने जो करना शुरू किया है वह एक नामकरण सम्मेलन का उपयोग इस प्रकार कर रहा है: namespace.classname.cs इस तरह से मुझे पता है कि प्रत्येक फ़ाइल में क्या है और यह फ़ाइल के समग्र संदर्भ के कुछ प्रकार भी प्रदान करता है। यदि कक्षा डिफ़ॉल्ट नाम स्थान पर होने जा रही है, तो मैं आगे बढ़ता हूं और बस classname.cs (जावा के समान) का उपयोग करता हूं ।

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