गोलंग में "यह" का प्रयोग


12

निकटतम चीज़ पर गोलांग को एक शैली गाइड मिली है , जिसे रिसीवर नाम के तहत लिखा गया है:

एक विधि के रिसीवर का नाम इसकी पहचान का प्रतिबिंब होना चाहिए; अक्सर इसके प्रकार के एक या दो अक्षर संक्षिप्त नाम (जैसे "क्लाइंट" के लिए "c" या "cl") होते हैं। "मुझे", "यह" या "स्व" जैसे सामान्य नामों का उपयोग न करें, उन ऑब्जेक्ट-ओरिएंटेड भाषाओं की विशिष्ट पहचान करते हैं जो कार्यों के विपरीत तरीकों पर अधिक जोर देते हैं। यह नाम विधि के तर्क के रूप में वर्णनात्मक नहीं होना चाहिए, क्योंकि इसकी भूमिका स्पष्ट है और कोई दस्तावेजी उद्देश्य नहीं है।

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

यदि नाम को वर्णनात्मक नहीं होना चाहिए, तो यह स्पष्ट है, और यह बिना किसी दस्तावेजी उद्देश्य के काम करता है , "इस" का उपयोग क्यों किया जाएगा?


3
अधिक जवाब के साथ इसी तरह के सवाल: stackoverflow.com/questions/23482068
ट्रेंटन

जवाबों:


11

हमें निश्चित रूप से जानने के लिए उस शैली मार्गदर्शक के लेखक से पूछना होगा, लेकिन मुझे लगता है कि मुख्य कारण मैं उससे सहमत हूं कि संरचना और विधि के बीच का संबंध अन्य भाषाओं की तुलना में गो में बहुत कम है

संक्षेप में, जब आप इस तरह से एक विधि लिखते हैं:

func (m *MultiShape) area() float64 {
  ...
}

यह इस तरह एक समारोह लिखने के रूप में लगभग एक ही बात है:

func area(m *MultiShape) float64 {
  ...
}

केवल अंतर यह है कि हम फ़ंक्शन / विधि को कैसे कहते हैं, इसमें थोड़ा सा वाक्यविन्यास परिवर्तन है।

अन्य भाषाओं में this/ self/ जो भी चर में आम तौर पर कुछ विशेष गुण होते हैं जैसे कि भाषा द्वारा जादुई रूप से प्रदान किया जाना, या निजी तरीकों तक विशेष पहुंच होना (याद रखें कि गो में निजी क्षेत्र / विधियां नहीं हैं)। हालांकि "रिसीवर" अभी भी कुछ हद तक "जादुई रूप से प्रदान" किया जा रहा है, यह एक नियमित फ़ंक्शन तर्क के समान है, जो यकीनन गिनती नहीं करता है।

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

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


यह एक अच्छी व्याख्या है, मुझे लगता है कि मैं C # और अन्य OOP भाषाओं का उपयोग कर रहा हूं, इसलिए मैं उन सम्मेलनों का लाभ उठा रहा हूं जिन्हें मैं जानता हूं।
एडम

1
@ thisअगर मैं किसी अन्य कारण से याद दिलाता हूं कि मैं पारंपरिक ओओपी भाषा में नहीं हूं तो मैं इससे बचूंगा।
माइकल हैम्पटन

4
"यह" और "रिसीवर" के बीच कोई वास्तविक अंतर नहीं है (और कृपया शब्द "जादू" को रोक दें - एक उच्च स्तरीय प्रोग्रामिंग भाषा की प्रत्येक विशेषता को "जादू" कहा जा सकता है, यह इसे कुछ भी नकारात्मक नहीं बनाता है, आपका प्रयास "इस" पर "जादू" होने का कोई मतलब नहीं है) उठाओ।
mvmn

6

मैं इस शैली गाइड से आश्वस्त नहीं हूं और मुझे नहीं लगता कि कुछ भी बेहतर है this, meया self। क्योंकि this, meया selfयह स्पष्ट करता है कि चर संदर्भ संरचना का एक उदाहरण है। मैं यह नहीं कह रहा हूं कि एक कम आवरण वाला संरचनात्मक नाम चर एक बुरा विचार है, मैं इसे उसी तरह पसंद करता हूं जो thisइसे सुपर स्पष्ट करता है।


स्पष्टीकरण के बिना, यह उत्तर उस स्थिति में बेकार हो सकता है जब कोई अन्य व्यक्ति एक विपरीत राय पोस्ट करता है। उदाहरण के लिए, यदि कोई व्यक्ति इस शैली के मार्गदर्शक से आश्वस्त होता है और मुझे लगता है कि यह उससे बेहतर है this, meया self" , तो यह उत्तर पाठक को दो विरोधी राय लेने में कैसे मदद करेगा?" विचार बेहतर तरीके से संपादित करने पर विचार करें , उत्तर दिशा निर्देशों को पूरा करने के लिए
gnat

मुझे लगता है कि मैंने स्पष्ट रूप से समझाया है कि मैं क्या कहना चाहता था।
कियान चेन

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

0

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

उदाहरण के लिए जावास्क्रिप्ट में, एक नियंत्रण मॉड्यूल एक संवाद शुरू कर सकता है और इसके लिए एक onLoadफ़ंक्शन इनलाइन घोषित कर सकता है। लेकिन उस बिंदु पर, यह गलत मतलब निकालने की एक और सांकेतिक शब्दों में बदलनेवाला के लिए बहुत आसान हो सकता है thisअंदर onLoadकंट्रोल मॉड्यूल, संवाद नहीं करने का उल्लेख करने के लिए; या ठीक इसके विपरीत। इससे बचा जा सकता है अगर नियंत्रण को ctrlऔर के रूप में संवाद के रूप में संदर्भित किया जाता है dg


3
मैं नीच नहीं हूं, लेकिन thisजावास्क्रिप्ट के अधिकांश भ्रमित व्यवहार केवल गो पर लागू नहीं होते हैं, इसलिए मुझे लगता है कि ऐसा क्यों है।
Ixrec

@Ixrec हम्म ... ठीक है। मैं इसे उन स्थितियों में विस्तारित करने की कोशिश कर रहा था जहां आप thisनाम चुन सकते हैं ; उदाहरण के लिए, अक्सर जेएस कोडर्स var self = thisएक ही संदर्भ के आसपास रखने के लिए लिखेंगे ; लेकिन गो के डिजाइन गाइड के अनुसार, फिर उसी भ्रम के मुद्दे हो सकते हैं, और सैद्धांतिक रूप से अधिक वर्णनात्मक संदर्भ का उपयोग करना चाहिए।
कटान ३१४
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.