नामकरण कन्वेंशन के दिशा निर्देशों के बारे में ध्यान देने योग्य हैं?


13

मैं .Net सम्मेलनों का उपयोग करके अपने चरों का नाम देता हूं:

  • चर और खेतों के लिए कैमेलकेस (मैं एक कक्षा में निजी क्षेत्रों के लिए _camelCase का उपयोग करता हूं)
  • PascalCase तरीकों, गुणों और वर्गों के लिए

एकमात्र स्थान जो मैं विचलित करता हूं वह स्थिरांक और एनम पर है जहां मैं वास्तव में जावा SCREAMING_CAPS शैली पसंद करता हूं।

मेरी कंपनी का कोडबेस छद्म-हंगेरियन संकेतन शैली के साथ VB6 और VBScript से भरा हुआ है, यदि पूर्ण-विकसित हंगेरियन अर्थात नहीं

  • स्ट्रिंग्स के लिए s या str
  • मैं या Ints के लिए int
  • d दशमलव के लिए (या कभी-कभी डबल)
  • किसी प्रकार की वस्तु के लिए ओ या ओब्जेक्ट

जब भी मैं उस कोड शैली को किसी और के कोड (यहां तक ​​कि ग्रीनफील्ड कोड में, न सिर्फ विरासत cruft) में इस्तेमाल करता हूं, तो मैं उखड़ जाता हूं, और मैं खुद उस शैली का उपयोग करने से इनकार करता हूं। मैंने अतीत में .Net नामकरण सम्मेलनों पर मानकीकरण लाया है और इसे सिर्फ नजरअंदाज किया गया है - जो लोग हंगेरियन नोटेशन में लिखते हैं वे ऐसा करना जारी रखते हैं, हम में से जो लोग मुझे पसंद नहीं करते हैं वे अपनी शैली का उपयोग करना जारी रखते हैं; मुझे थोड़ा डर है कि अगर हम मानकीकरण करते हैं (जिसे मैं आगे बढ़ाता रहता हूं, लेकिन किसी और को परवाह नहीं है), यह हंगेरियन नोटेशन पर होगा और अनुशंसित तरीके से नहीं और फिर मुझे उस तरह कोड लिखने के लिए मजबूर किया जाएगा। ।

क्या मैं इस सम्बन्ध में एक पहाड़ को मोल से बना रहा हूँ? क्या मुझे परवाह नहीं करनी चाहिए कि क्या कोड निरर्थक पहचानकर्ताओं से भरा हुआ है और वर्णनात्मक नाम नहीं है, और मानक बनने के लिए अपने तरीके का उपयोग करना और आगे बढ़ना जारी रखना चाहिए?


2
अच्छा प्रश्न। नामकरण सम्मेलनों में मदद करने के लिए हैं, न कि बाधा डालने के लिए। जब वे बाधा डालते हैं (क्योंकि उनका मूल उद्देश्य अब प्रासंगिक नहीं है) तो उन्हें खाई।
गैरी रोवे

जवाबों:


7

केवल एक चीज जिस पर आपको ध्यान देना चाहिए, वह यह है कि आप एक ऐसी टीम में काम कर रहे हैं, जहां लोग चीजों को थोड़ा साफ करने की परवाह नहीं करते हैं। यह बहुत दुख की बात है।

आप जो करते हैं, आधुनिक शैली का उपयोग करना जारी रखें और लोगों को आमंत्रित करें (लेकिन उन्हें मजबूर न करें) इसे भी अपनाएं। इसमें समय जरूर लगेगा। कुछ समय बाद आप देखेंगे कि क्या यह कहीं जा रहा है और आप आगे क्या कर रहे हैं।

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


+1 इन दिनों Refactor Rename इतना कुशल है कि आप शायद ही बदलाव करने के प्रभाव पर ध्यान दें।
गैरी रोवे

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

3

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

यह एक तकनीकी ऋण प्रश्न का एक प्रकार है, क्योंकि आप स्पष्ट रूप से सही हैं कि यह शैली हंगेरियन .net ("I" के साथ इंटरफेस के अपवाद के साथ कोई मतलब नहीं है, लेकिन दूसरी बार के लिए thats), हालांकि, यह इस तरह का हो सकता है तकनीकी ऋण आपकी टीम तब तक साथ रह सकती है जब तक वह स्वाभाविक रूप से बाहर नहीं निकलती


4
मैं "I" उपसर्ग के लिए भी परवाह नहीं करता हूं, और केवल इसका उपयोग करता हूं क्योंकि यह जावा कॉन्डम से बचता है, कहते हैं, एक नामित नाम CustomerRepositoryऔर वर्ग CustomerRepositoryImplया समान।
वेन मोलिना

3
+1 - ऐसा लगता है कि कुछ बेहतर तरीका होना चाहिए। मैं समय-समय पर "हंगेरियन लाइट" का उपयोग करता हूं, लेकिन उपसर्ग हमेशा संबंधित व्यवसाय होते हैं, प्रकार से संबंधित नहीं। उदाहरण के लिए, लेखांकन में हर चीज का एक एपी और एक एआर पक्ष होता है, और उनका अक्सर एक ही नाम होता है, जैसे चालान। ARInvoice और APInvoice का होना मुझे पूरी तरह से उचित लगता है। हंगेरियन हर समय बुरा नहीं होता।
मॉर्गन हेरलॉकर


मैं वास्तव में उस "हंगेरियन नोटेशन" पर विचार नहीं करूंगा क्योंकि जैसा कि आपने कहा कि यह एक अच्छी तरह से परिभाषित संक्षिप्त नाम के साथ एक व्यावसायिक अर्थ है जिसे लोग जानते हैं, साथ ही कोड वाले समान पंक्तियों का उपयोग करते हैं जो एक्सएमएल के Xmlबजाय पहले से उपसर्ग करते हैं ExtensibleMarkupLanguage। एक लेखांकन मॉड्यूल में मैं इनवॉइस ऑब्जेक्ट्स को देखने की अपेक्षा करूंगा arInvoiceऔर apInvoiceवह व्यावसायिक संदर्भ को व्यक्त करेगा, लेकिन देखने objArInvoiceया oApInvoiceकेवल मूर्खतापूर्ण आईएमओ है। मुझे लगता है कि यह बदतर हो सकता है, यह clsApInvoiceवास्तविक वर्ग के नाम के
वेन मोलिना

1
@ironcode: यह वास्तव में एप्स हंगेरियन नोटेशन, बनाम सिस्टम हंगेरियन नोटेशन कहा जाता है, और बहुत बेहतर है। ज्यादातर लोग दुर्भाग्य से सिस्टम का उपयोग कर रहे हैं। en.wikipedia.org/wiki/…
Miki Watts

2

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

  • अधिक डिस्टिंशन (b) ool (f) loat (c) har (l) ong (s) हॉर्ट (स्ट्रिंग के साथ संघर्ष? नहीं: (S) ट्रिंग), (v) oid को प्रोत्साहित करें।
  • दृश्यता एन्कोडिंग को प्रोत्साहित करें। मैं जावलैंड से हूं, और आशा है कि यह .net के लिए भी फिट बैठता है: (पुर) वैट, (पब) blic, (pro) tected (def) ault का उपयोग किया जाना चाहिए।
  • .net में अंतिम / कास्ट है? इसे एक उपसर्ग बनाओ! क्या मैं 'अस्थिर' सुनता हूं?
  • Int और long को उपसर्ग की आवश्यकता क्यों होती है, लेकिन विभिन्न वस्तुएं नहीं होती हैं? यह तर्कसंगत नहीं है। एक abbrev.tab बनाएँ। जहां हर नई वस्तु को एक अलग एब्सर्व मिलता है।
  • चर जो अशक्त हो सकते हैं और ऐसे, जो कभी अशक्त नहीं होने चाहिए, उपसर्ग भी हो सकते हैं। चतुर लोग पूरे डीबीसी को एक चर के उपसर्ग में डालते हैं।

गंभीरता से: Refactoring पर, आप एक चर को int से long, String से char में बदल सकते हैं। आपको नाम बदलने की भी आवश्यकता नहीं है।

IDEs में, आपको अक्सर एक बॉक्स में साइड में छाँटे गए नाम मिलते हैं। नाम से क्रमबद्ध, जहां इसे खोजना आसान है। यदि अधिकांश चर ओ या आई के साथ शुरू होते हैं, तो यह नाम के महत्वपूर्ण भाग को प्राप्त करने के लिए, आंखों के लिए परेशान है।

अतिरिक्त वर्ण चर के शब्दार्थ को विचलित करते हैं। एक पूर्णांक 'sane' को 'i_sane' मिलता है, जो 'insane' की तरह दिखता है।

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

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


दुख की बात है कि मैंने भी eSomeEnumजगहों पर इसका इस्तेमाल किया है; शुक्र है कि अक्सर नहीं।
वेन मोलिना

2

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


1

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

उस नस में, मैं पूरी तरह से नामकरण सम्मेलनों के बजाय डोमेन केंद्रित चर नामकरण का उपयोग करने के लिए एक टीम को समझाने के लिए अपनी पूरी कोशिश करूँगा, लेकिन अगर यह सब कठिन हो जाता है तो मैं नामकरण के एक मानक को स्वीकार करने के लिए वापस आऊंगा जो सभी को पालन करना होगा एक सामान्य कोड आधार।

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


1

फेरबदल के साथ चर नामकरण इतना तेज है कि मैं बीमार नामकरण सम्मेलनों को इतनी तेजी से पूर्ववत कर सकता हूं, कि मुझे पुराने, गलत नेतृत्व वाले सम्मेलनों को छोड़ने की ज़रूरत नहीं है।

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


0

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


0

मेरे विचलन:

  • _PublicPropertyBacker
  • _private_property_backer
  • _privateMember
  • CONSTANT_MEMBER
  • privateFunction
  • param_
  • निजी बटन okBU; //आदि। सीमा 3 चार्ट
  • पिनवॉक संरचनाओं के लिए संरचनात्मक सोमेस् यूसीटी //

सामान्य कोड क्षेत्र और फ़ाइल लेआउट:

  • सदस्य
    • (निजी | आंतरिक | संरक्षित | सार्वजनिक) X [स्थैतिक] X [कांस्टेबल / पठनीय]
  • गुण
    • (निजी | आंतरिक | संरक्षित | सार्वजनिक) X [स्थैतिक] X [आसानी से]
  • कंस्ट्रक्टर्स
    • (निजी | आंतरिक | संरक्षित | सार्वजनिक) X [स्थिर]
  • शून्य वापसी या स्थिति वापसी के साथ कुछ भी जोड़ता है
    • (सार्वजनिक | संरक्षित | आंतरिक | निजी) X [स्थैतिक]
  • इवेंट हैंडलर / निजी /
    • (नियंत्रण | रिमोट | सेवा | अन्य) घटनाक्रम
  • कार्य // राज्य को क्वेरी करते हैं, कोई साइड-इफेक्ट नहीं होना चाहिए
    • (सार्वजनिक | संरक्षित | आंतरिक | निजी) X [स्थैतिक]
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.