2010-12-05 6 views
7

आम तौर पर मैं चर के लिए पीईपी -8 में बताए गए मानक नामकरण का उपयोग कर रहा हूं। जैसा:हम पाइथन परिवर्तनीय नामों के लिए किस संक्षिप्त नाम का उपयोग करना चाहिए?

delete_projects 
connect_server 

हालांकि कभी कभी मैं किसी भी अच्छा नाम नहीं मिल रहा है और नाम सिर्फ एक लंबी एक का विस्तार:

project_name_to_be_deleted 

मैं pr_nm_del इस्तेमाल कर सकते हैं, लेकिन इस कोड अपठनीय बनाता है। मैं वास्तव में कार्यों के लिए अच्छे परिवर्तनीय नाम खोजने पीड़ित हूँ। जब भी मैं एक नया फ़ंक्शन लिखना शुरू करता हूं तो मैंने एक अच्छा चर नाम खोजने के लिए समय बिताया।

क्या delete,project,configuration, etc. जैसे प्रसिद्ध परिवर्तनीय नामों के लिए कुछ संक्षेपों को चुनने के लिए कोई मानक है? आप छोटे लेकिन अच्छे और पठनीय चर नाम कैसे चुनते हैं?

यह प्रश्न सीधे पायथन पर निर्भर नहीं हो सकता है, लेकिन विभिन्न प्रोग्रामिंग भाषाएं विभिन्न परिवर्तनीय नाम स्वरूपण का उपयोग करती हैं, मैंने सोचा कि मैं इस प्रश्न को पायथन केवल पर सीमित करता हूं।

+8

आह, 'नामकरण-सम्मेलन' ... जैसा कि वे कहते हैं, कंप्यूटर विज्ञान में दो कठोर समस्याएं कैश अमान्यता, चीजों का नामकरण और एक-एक-एक त्रुटियां हैं;) – delnan

+0

मानक लघु रूपों का उपयोग क्यों नहीं करें: del हटाने के लिए, कॉन्फ़िगरेशन के लिए cnfg और इतने पर? – user225312

+0

@sukhbir अच्छी तरह से यह समस्या है। एक नौसिखिया के रूप में जो पहले किसी अन्य परियोजना के लिए काम नहीं करता था, इसे चुनना मुश्किल हो जाता है। उदाहरण के लिए पीईपी -8 के साथ मुझे पता था कि मुझे 'name_variable' जैसे चर का उपयोग करना चाहिए, लेकिन मुझे नहीं पता कि छोटे चर या संक्षेपों के लिए क्या चयन करना है। मेरा मतलब है कि इसके लिए कोई दस्तावेज या कोई मानक है? मुझे इससे संबंधित कुछ भी नहीं मिला। –

उत्तर

5

pr_nm_del? आप एक बिल्ली का नाम भी दे सकते हैं। मेरा मानना ​​है कि संक्षेप में स्पष्ट रूप से ज्ञात/स्पष्ट वाले (जैसे del) को छोड़कर संक्षेप में टालना चाहिए, जैसा टिप्पणियों में उल्लिखित है - कि कोई भी एक भाषा कीवर्ड है!) जो पूरी तरह से टाइपिंग को बचाता है।

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

+1

यदि आपको वास्तव में हटाए जाने वाले प्रोजेक्ट के लिए नाम देना है, तो इसे 'obsolete_project_name' क्यों न कहें? –

+2

मैं 'doomed_project_name' के लिए जाऊंगा। –

0

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

आपके उदाहरण के लिए, project_name_to_be_deleted ठीक है। यदि आप इसे छोटा करना चाहते हैं, तो मैं project_name_to_del का उपयोग करने का सुझाव दूंगा क्योंकि deldelete के लिए एक प्रसिद्ध संक्षेप है (आप इसे अपने कीबोर्ड में भी ढूंढ सकते हैं)। और उपयोग confconfiguration के रूप में भी लोकप्रिय है। लेकिन आगे मत जाओ। उदाहरण के लिए, proj2del एक अच्छा विचार नहीं है।

इसके अलावा, आंतरिक/स्थानीय चीजों के लिए, छोटे-से-वर्णनात्मक नामों का उपयोग करना ठीक है।

0

आपके उदाहरण में, आपके पास delete_project नामक एक फ़ंक्शन है। इस बात को आश्चर्यचकित करना कि वेरिएबल को कॉल करना है जो परियोजना को हटाए जाने के लिए स्टोर करता है? बस 'परियोजना'!

def delete_project(self, project): 
    del self.projects[project] 

सरल।

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

यदि आपको लगता है कि फ़ंक्शन नाम बहुत लंबा हैं, तो वे शायद बहुत अधिक कर रहे हैं।यदि आपको लगता है कि चर नाम बहुत लंबे हो रहे हैं, तो वर्तमान संदर्भ में उनके उद्देश्य के बारे में सोचें, और देखें कि नाम का हिस्सा निहित किया जा सकता है या नहीं।

1

यह एक समस्या है कि जब आप ओओपी कर रहे हों तो खुद को हल करता है।

class Workspace(object): 

    def delete_project(self, project): 
     log.info("Deleting", project.name) 
     ... 
0

बहुत कुछ नाम "मानक" संक्षिप्त रूपों है: विषय (project, configuration) वर्ग और क्रिया (delete, etc) विधि नाम यानी है। आपको लगता है कि "आम" या "मानक" किसी और के लिए समान नहीं है। एक अच्छा नाम स्थापित करने में बिताए गए समय का अच्छी तरह से निवेश किया जाता है, क्योंकि कोड लिखे जाने से कहीं अधिक बार पढ़ा जाता है। उदाहरण के लिए, मैंने देखा है "विन्यास" रूप "config" "cnfg" "cfg" "cnf" संक्षिप्त ... इसलिए सबक है - संक्षिप्त नहीं है जब तक कि वहाँ एक बहुत है इसका संक्षिप्त नाम!

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^