2008-09-29 11 views
31

मैं पास्कल आवरण (ऊपरी ऊंट के मामले) बनाम कम CamelCasing के बारे में अपने सहकर्मियों के साथ बहस कर रहा हूं। वे सी # कोड में संपत्ति नामकरण करने के लिए SQL डेटाबेस में तालिका नाम से सब कुछ के लिए ऊंट आवरण कम करने के लिए उपयोग किया जाता है, लेकिन मैं पास्कल आवरण बेहतर है, कम ऊंट आवरण चर के लिए और पास्कल आवरण गुणों के लिए चाहते:सी # कोड के लिए पास्कल आवरण या ऊंट केसिंग?

string firstName; 
public string FirstName { 
... 
} 

लेकिन वे उपयोग किया जाता है यह करने के लिए:

string _firstname; 
public string firstName { 
... 
} 

मैं उनके "मानक" तो कोड एक ही लग रहा है के साथ रखने की कोशिश, लेकिन मैं सिर्फ यह पसंद नहीं है।

मैंने देखा है कि कम से कम नेट ढांचा इस सम्मेलन का उपयोग करता है और वह यह है कि कैसे मैं अपने कोड रखने की कोशिश, उदा .:

System.Console.WriteLine("string") 

आप/क्या प्रयोग करते हैं पसंद करते हैं और क्यों? मुझे खेद है अगर किसी और ने इस सवाल से पूछा लेकिन मैंने खोज की और कुछ भी नहीं मिला।

अद्यतन: मैंने एक विधि उदाहरण दिया है, लेकिन संपत्ति नहीं है लेकिन यह वही है। जैसा कि मैंने पहले अनुच्छेद में कहा था कि मेरे सहयोगी सबकुछ (चर, विधियों, तालिका नाम इत्यादि) के लिए पास्कल सम्मेलन का उपयोग करते हैं

उत्तर

31

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

+18

मैं यहां असहमत हूं। मैं फ्रेमवर्क के साथ स्थिरता के लिए, पूर्व-जावा डेवलपर्स को .NET मानकों पर कम करने की कोशिश करता हूं। – Joe

+4

पर्यावरण के आधार पर, नए लड़के को फिट करने के लिए मानक बदलना अक्सर सीएलएम होता है। –

+0

कृपया सीएलएम से लिंक करें जिसे आपने संदर्भित किया है। – Jessy

2

मैं (और मेरी टीम) कक्षा के नामों के लिए प्रारंभिक राजधानियों को आरक्षित करना पसंद करते हैं।

क्यों? जावा मानकों का प्रचार, मुझे लगता है।

+1

वही, मैं आपको समझता हूं! –

+0

लेकिन क्या यह हर बार मुझे मजबूर नहीं करता है कि मैं यह सोचने के लिए कोड लिख रहा हूं कि यह घर में है या तीसरी पार्टी या ढांचा घटक है? –

+2

@ChrisPitman मुझे पता है कि यह एक पुरानी टिप्पणी है, लेकिन मुझे और क्या बग है 'कुछ() '। क्या यह एक समारोह कॉल या कक्षा का एक निर्माता है? – Vallentin

0

पास्कल आवरण गुणों के लिए उपयोग किया जाना चाहिए। जहां तक ​​विविध नाम जाते हैं, कुछ लोग _ और कुछ poeple उपयोग m_ का उपयोग करते हैं और कुछ लोग केवल पुराने पुराने ऊंट आवरण का उपयोग करते हैं। मुझे लगता है कि जब तक आप यहां स्थिर रहते हैं, इससे कोई फर्क नहीं पड़ता।

0

आपके द्वारा पोस्ट किए गए .NET का वह उदाहरण एक कार्य था। विधियों/कार्यों के लिए अपनाया गया "मानक" एक कैप्ड ऊंट-केस है (या पास्कल, अगर आप इसे कॉल करना चाहते हैं)।

मैं ऊंट के मामले में चिपक जाता हूं जहां मैं कर सकता हूं। यह आपको एक चर और विधि के बीच अंतर को आसानी से जानने देता है।

इसके अतिरिक्त, मैं स्थानीय वर्ग चर के सामने अंडरस्कोर चिपकाने का प्रशंसक हूं। उदा। _localVar

7

सार्वजनिक इंटरफेस के लिए आपको एमएस .NET फ्रेमवर्क डिजाइन दिशानिर्देशों के साथ रहना चाहिए: "Capitalization Conventions"।

गैर-उजागर सदस्यों के लिए जो भी आप और आपके सहयोगी सहमत हो सकते हैं।

0

मुझे लगता है कि आपको कोडिंग मानक आपके काम के स्थान के बारे में बताता है, हालांकि आप इसे व्यक्तिगत रूप से नापसंद करते हैं। शायद भविष्य में एक दिन आप अपने कोडिंग मानकों को निर्देशित करने में सक्षम होंगे।

व्यक्तिगत रूप से मुझे टेबल और फ़ील्ड के लिए "fish_name", "tank_id", आदि के नामों का उपयोग करने के लिए डेटाबेस पसंद है, जबकि डेटाबेस मॉडल के समतुल्य कोड "fishName" और "tankID" होगा।जब "fooName" उपलब्ध होता है तो मैं "_fooname" नामकरण भी नापसंद करता हूं। लेकिन मुझे दोहराया जाना चाहिए कि यह व्यक्तिपरक है, और अलग-अलग लोगों के पास उनके पूर्व अनुभव और शिक्षा के कारण अच्छे और बुरे के बारे में अलग-अलग विचार होंगे।

36

आधिकारिक design guidelines का एक लिंक मदद कर सकता है। विशेष रूप से, Capitalization styles पर अनुभाग पढ़ें।

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

मैं तब तक खुश हूं जब तक आप हंगेरियन का उपयोग नहीं कर रहे हैं।

+0

मैं चाहता हूं कि डिज़ाइन दिशानिर्देशों का एक पीडीएफ/वर्ड वर्जन था, मैं इसे प्रिंट कर दूंगा और इसे एक दुकान-मानक कहूंगा! –

+0

यह एक बड़ा दस्तावेज़ है, लेकिन _that_ बड़ा नहीं है, और वर्ड एचटीएमएल से कॉपी/पेस्ट को अच्छी तरह से संभालता है। इसका लाभ उठाएं। –

+1

.NET आंशिक रूप से हंगरी का उपयोग करता है। IENumerable, IQueryable, आदि ... – adamjc

0

दरअसल, इस पर कोई "मानक" सम्मेलन नहीं है। माइक्रोसॉफ्ट संपादित दिशानिर्देश कहीं और है, और साथ ही किसी भी अन्य नामकरण सम्मेलन दिशानिर्देश के साथ, निश्चित रूप से एक और इसे अस्वीकार कर रहा है, लेकिन यहां मैं "मानक सी # आवरण सम्मेलन" के रूप में समझने आया हूं।

  1. प्रकार के नाम (कक्षाएं, enums), स्थिरांक और गुणों में PerWordCaps। वास्तव में लंबे समय से स्थानीय चर के लिए
  2. CamelCase और संरक्षित/निजी चर
  3. नहीं ALL_CAPS कभी (ठीक है, केवल में संकलक को परिभाषित करता है, लेकिन अपने कोड में नहीं)
  4. ऐसा लगता है प्रणाली वर्ग के कुछ रेखांकित नामों का उपयोग करें (_name) निजी चर के लिए, लेकिन मुझे लगता है कि मूल लेखक की पृष्ठभूमि से आता है क्योंकि उनमें से अधिकतर सीधे सी ++ से आए थे। साथ ही, ध्यान दें कि वीबी.नेट केस संवेदनशील नहीं है, इसलिए यदि आप कक्षा बढ़ाते हैं तो आप संरक्षित चर तक पहुंच नहीं पाएंगे।

दरअसल, FxCop उन नियमों में से कुछ को लागू करेगा, लेकिन (AFAIK) यह स्थानीय चर के लिए उपयोग की जाने वाली वर्तनी को अनदेखा करता है।

+0

इसके लिए एक मानक सम्मेलन है, और स्टाइलकॉप इसे लागू करता है। – Anthony

+0

यूप, उस उपकरण के बारे में नहीं पता था। धन्यवाद। – dguaraglia

16

में बाहर रखी कोडिंग सम्मेलनों की तरह आप माइक्रोसॉफ्ट के नए उपकरण, StyleCop सी # स्रोत कोड की जाँच के लिए पर एक नजर है चाहिए। संकलित .NET असेंबली जांचने के लिए FxCop पर भी नजर रखें। FxCop लेआउट पर नहीं, कोड क्या करता है, इसके विवरण पर अधिक केंद्रित है, लेकिन इसमें कुछ नामकरण नियम सार्वजनिक रूप से दृश्यमान नाम से संबंधित हैं।

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

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

एक परियोजना शुरू होने पर लोगों को मनाने के लिए बहुत आसान है - टीम बनाई जा रही है और कनवर्ट करने के लिए कोई मौजूदा कोड नहीं है। और यदि कोड मानकों को पूरा नहीं करता है तो आप बिल्ड को तोड़ने के लिए टूल (FxCop, StyleCop) डाल सकते हैं।

आपको भाषा और ढांचे के लिए मानक का उपयोग करना चाहिए - एसक्यूएल कोड को एसक्यूएल मानकों का उपयोग करना चाहिए, और सी # कोड को सी # मानकों का उपयोग करना चाहिए।

+0

वाह! साफ, वह नहीं जानता था। – dguaraglia

+0

पहले से संकलित असेंबली के साथ काम करते समय FxCop भी महान है। मैंने स्टाइलकॉप और FxCop – BinaryMisfit

1

.नेट फ्रेमवर्क डेवलपर की मार्गदर्शिका Capitalization Conventions, केस-संवेदनशीलता से:

कैपिटलाइज़ेशन दिशानिर्देश मौजूद केवल पढ़ने में आसान पहचानकर्ता बनाने के लिए और पहचान करने के लिए। आवरण लाइब्रेरी तत्वों के बीच नाम टकराव से बचने के साधन के रूप में उपयोग नहीं किया जा सकता है।

यह न मानें कि सभी प्रोग्रामिंग भाषाएं केस-संवेदी हैं। वे नहीं हैं। नाम अकेले भिन्न नहीं हो सकते हैं।

1

मुझे अभी Coding Standards for .Net मिला है।

+1

दोनों का उपयोग करने से पास्कल और ऊंट आवरण को कैसे करना है, कृपया URL शॉर्टनर्स का उपयोग न करें। अपने उत्तर में लिंक को सही तरीके से शामिल करने के तरीके को देखने के लिए अपने संस्करण और मेरे संपादन की तुलना करें। – meagar

+0

धन्यवाद मीगर। निश्चित रूप से, मैं अगली बार –

+0

से ऐसा करूँगा। नेट के लिए कोडिंग मानकों को लिखने के लिए लांस हंट की योग्यता क्या हैं? – Eric

-2

जिस दिन मैंने प्रोग्रामिंग छोड़ दी - जब माइक्रोसॉफ्ट कैमरेकेस को सी # में मानक के रूप में बनाएगा। चूंकि मेरे उगाए गए तर्क में पास्कलकेस के कई कारण हैं, बच्चे के तर्क के विपरीत, जो केवल छोटे नामों को लिखने या लिखने में आसान है।

और btw: CamelCasing, देशी वर्ष सी तो जावा से विरासत में मिली भाषा C से विरासत में मिली ++ सी ++ एसटीडी पुस्तकालय शैली से मुख्य रूप से आता है। लेकिन सी # - नए नियमों के साथ पूरी तरह से नई भाषा है - स्वच्छ और सुंदरता। ओल्डफैग को जावा या सी ++ पर प्रोग्राम करना होगा, नई पीढ़ी के लोगों को सी # पर प्रोग्राम करना होगा - और उन्हें कभी भी बातचीत नहीं करनी चाहिए। 1) PascalCase:

इस उदाहरण पर विचार list.Capacity.ToString(); 2) CamelCase: list.capacity.toString();

में (1) हमारे पास लंबे समय तक कैमरे का मामला है !!! मतलब सूची कैपेसिटी टॉस्ट्रिंग। में (2) हमारे पास bullshit है: listcapacitytoString।

मैं कैसे पढ़ता हूं। और क्यों CamelCase अपने दिल के लिए अजीब है। मैं पास्कलकेस के लिए मार सकता हूं, कभी भी इसे छू नहीं सकता, किसी भी उम्र के बच्चे।

माइक्रोसॉफ्ट - हमेशा के लिए या जब तक वे पास्कलकेस का उपयोग नहीं करते हैं।

-2

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

+0

बेशक, हमेशा कुछ कोड स्नॉब्स होंगे जो पूरी तरह उचित कुछ के साथ वोट देते हैं और असहमत हैं: ') – Daniel