क्या कक्षाओं, एनम और अन्य संस्थाओं को अलग-अलग फाइलों में रखा जाना चाहिए?


12

मेरी कंपनी की टीम के लीडर / आर्किटेक्ट का तर्क है कि बड़े पैमाने पर प्रोजेक्ट को समझना आसान है अगर "लॉजिक से जुड़ी इकाइयाँ" को एक .cs फ़ाइल में रखा जाता है।

मैं उद्धृत करता हूं:

  • "तर्क और इंटरफ़ेस और वर्ग की पूरी संरचना को एक ही स्थान पर देखा जा सकता है, यह एक तर्क है जिसे अस्वीकार नहीं किया जा सकता है। एक ही चीज़ को देखने के लिए लेकिन फ़ाइलों के एक समूह के साथ आपको उपकरण, वर्ग का उपयोग करने की आवश्यकता है। चित्र, आर # नेविगेशन के लिए, आदि "

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

  • "... डेवलपर्स के बीच कोड आधार के अलगाव के रूप में, आजकल यह एक ही फाइल को एक साथ संपादित करने में समस्या नहीं है। मर्ज कोई समस्या नहीं है।"

मैंने कई बार सुना और पढ़ा कि हमें एक .cs फ़ाइल प्रति एनीम, क्लास आदि बनानी है और यह सबसे अच्छा अभ्यास है।

लेकिन मैं उसे मना नहीं सकता। वह कहते हैं कि उन्हें जॉन स्कीट जैसे किसी भी प्रसिद्ध प्रोग्रामर पर भरोसा नहीं है। वैसे यहां इस विषय पर स्कीट की राय है: एनम के प्रकारों का पता लगाने के लिए सबसे अच्छी जगह कहां है?

तुम क्या सोचते हो? क्या कोई वास्तविक समस्या है? या यह स्वाद का मामला है और इसे संगठन के कोडिंग मानक द्वारा विनियमित किया जाना चाहिए?


जब आप स्कीट कार्ड खेलते हैं तो आप सभी को नहीं जीत सकते।
जेएफओ

6
निष्पक्षता में, जॉन स्कीट की प्रसिद्धि का दावा एक उत्कृष्ट कोड शिल्पकार नहीं है, यह जल्दी और सही तरीके से सी # सवालों के जवाब देने में सक्षम और सक्षम है (और उन्होंने शाब्दिक रूप से किताब लिखी)। और संभवत: कभी नींद नहीं आती, हालांकि यह केवल एक अफवाह है। अकेले इस पर उनकी राय पर्याप्त नहीं होनी चाहिए, और उनका तर्क मजबूत नहीं है। इसका मतलब यह नहीं है कि वह इस मामले में गलत है, मैं सिर्फ यह कह रहा हूं कि आपके वरिष्ठ को "तथ्यों और कारणों के साथ मेरे पास आने का अधिकार है, राय का नहीं।"
पीडीआर

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

2
आप बता सकते हैं कि स्टाइलकॉप एक विजुअल स्टूडियो प्लगइन के रूप में चेतावनी है अगर वहाँ है> फ़ाइल प्रति 1 वर्ग
केविन

जवाबों:


20

आपकी टीम लीड के तर्क में कुछ खामियां हैं:

  1. अच्छी तरह से डिजाइन की गई कक्षाएं और एनम का उपयोग आपकी परियोजना में कहीं भी उपयोग करने के लिए किया जाता है , न कि केवल जहां वे तार्किक रूप से समझ में आते हैं।

  2. एक्सएमएल टिप्पणियों के साथ ठीक से वर्गीकृत किए गए वर्ग और एनम बहुत आत्म-वर्णन कर रहे हैं, केवल आइटम पर इसे संदर्भित करके मँडराते हैं।

  3. आप हमेशा संदर्भ को राइट-क्लिक करके और "गो टू डेफिनिशन" का चयन करके एक वर्ग या एनम परिभाषा प्राप्त कर सकते हैं, इसलिए यह वास्तव में कोई फर्क नहीं पड़ता कि आपने इसे कहां रखा है।

  4. "तार्किक" फैशन में वस्तुओं को एक साथ रखना मनमाना है (अर्थात आपको "तार्किक" के बारे में सोचना होगा। मैं बल्कि उन घड़ी चक्रों को खर्च करूँगा जो वास्तविक प्रोग्रामिंग कर रहे हैं)।

अपनी फ़ाइल में प्रत्येक ऑब्जेक्ट की परिभाषा स्थापित करने से संगठन और संरचना की एक समान, अनुशासित अपेक्षा पैदा होती है, और "यहाँ क्या है?" जैसे सवाल नहीं उठाते हैं। यह एक बहुत अच्छी बात है।

यदि दो या अधिक ऑब्जेक्ट तार्किक रूप से संबंधित हैं, तो उन्हें प्रोजेक्ट एक्सप्लोरर में अपने स्वयं के फ़ोल्डर में रखें


5
एक अन्य नोट पर, कोड मर्ज चूसना। ज़रूर, आप उन्हें कर सकते हैं, लेकिन क्यों, अगर आपके पास नहीं है?
रॉबर्ट हार्वे

4

सबसे अधिक संभावना है कि टीम लीड ने अपने दांतों को पहले के युग में काट दिया जब राइट क्लिक और "गो टू डेफिनिशन" चुनना कोई विकल्प नहीं था। मुझे पता है कि जब मैं भारी स्पाइक डेवलपमेंट मोड में होता हूं, तब तक मैं बड़े पैमाने पर क्लास की फाइलें उगाऊंगा, जब तक कि मैं इसे अपने लिए ठीक नहीं कर दूं।

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

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