C ++ "तरीकों" (बनाम "सदस्य फ़ंक्शन") के बारे में बात करना कितना गलत है?


19

मैं समझता हूं कि सी ++ की युक्ति के अनुसार "विधि" जैसी कोई चीज नहीं है, और कुछ (कई? अधिकांश?) सी ++ प्रोग्रामर "विधि" को जावा-इसम मानते हैं। दूसरी ओर, सी ++ फोरम पर भी लोग बिना चिकोटी के तरीकों के बारे में बात करते हैं। मैं इस शब्दावली के बारे में ज्ञात सम्मेलनों या सामान्य प्रथाओं की तलाश कर रहा हूं।

मैं एक एपीआई का दस्तावेजीकरण कर रहा हूं जिसमें C ++ और Java दोनों संस्करण हैं। डेवलपर्स ने वास्तव में वर्ग और विधि / सदस्य-फ़ंक्शन नामों को दोनों के बीच समान रखा, संभवतः पोर्टिंग और परीक्षण में तेजी लाने के लिए। इस वजह से, इन एपीआई के बारे में जो कुछ दस्तावेज की आवश्यकता है, वह भाषा की पसंद "ऊपर" बैठता है; मुझे फ़ोस और बार्स के बारे में सामान्य रूप से बात करने में सक्षम होना चाहिए , उनके बाज () और मम्बल () ... तरीकों के साथ?

अगर मैं तरीकों के बारे में बात करता हूं तो जावा प्रोग्रामर इसे स्वाभाविक मानेंगे और ऐसा प्रतीत होता है, सी ++ प्रोग्रामर शायद समझ जाएंगे लेकिन कुछ इसे गलत मानेंगे। मेरा सवाल है: यह कितना जघन्य व्यवहार में है ? C ++ के सदस्य कार्यों को पारंपरिक रूप से "सामान्य OOP" संदर्भों के बारे में कैसे कहा जाता है, जैसा कि C ++ के विशिष्ट लोगों के विपरीत है? क्या एक तरह से सदस्य कार्यों के बारे में बात करना बेहतर है जो किसी भी भाषा के लिए गलत नहीं है? ("सदस्य कार्य" थोड़ा क्रिया है)

यह एक राय सर्वेक्षण नहीं है; मैं यह निर्धारित करने की कोशिश कर रहा हूं कि क्या इस समस्या के समाधान के लिए वास्तविक सम्मेलन या आम प्रथाएं हैं

मैं इस प्रश्न से अवगत हूँ , लेकिन यह सामान्य रूप से OOP के बारे में है और विशिष्ट भाषाओं के बारे में नहीं पूछता है।


मैंने सहायता केंद्र को पढ़ा और यह पूछने से पहले टैग सूची की समीक्षा की। क्या मैंने यहां यह पूछकर कुछ गलत किया है?
मोनिका सेलियो

आपके पास जो मुख्य वोट है, वह मुख्य रूप से राय के आधार पर है, जो अच्छी तरह से हो सकता है .. निश्चित नहीं कि यह किसी भी एसई साइट पर कितनी अच्छी तरह काम कर सकता है क्योंकि यह आधिकारिक तौर पर कहना मुश्किल है कि लोग आप पर चिढ़ेंगे या नहीं और वे किस आयाम पर पहुंचेंगे हो सकता है .. एक व्यक्ति सोच सकता है कि यह पूरी तरह से ठीक है और दूसरा सोचेंगे कि यह शब्दावली का एक भयानक उल्लंघन है, जैसा कि आपने क्यू में वर्णित किया है- इस वजह से यह अपेक्षाकृत एक राय है-केवल एक तरह की चीज है
जिमी हॉफ

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

1
@ जिमीहॉफा क्या यह बेहतर है?
मोनिका सेलियो

3
बस उन्हें अपने क्रॉस-भाषा एपीआई डॉक में विधियों को कॉल करें। आप इंट्रो पाठ में एक वाक्यांश शामिल कर सकते हैं जैसे "प्रोग्रामिंग भाषा अज्ञेय बने रहने की कोशिश करने के लिए यह एपीआई प्रलेखन सी ++ सदस्य कार्यों को संदर्भित करने के लिए शब्द विधि का उपयोग करेगा।"
ब्रैंडिन

जवाबों:


11

आप प्रलेखन के परिचयात्मक भाग में स्पष्टीकरण (जैसे बहुत कुछ आपने अपने प्रश्न में किया है) को शामिल नहीं करते हैं, उदाहरण के लिए ए कन्वेंशन अनुभाग? तब आप समझा सकते हैं कि "डॉक्यूमेंट" शब्द, जैसा कि आपके डॉक्यूमेंटेशन में इस्तेमाल किया गया है, सामान्य रीति के तरीके (जावा), मेंबर फंक्शन (C ++), ... के बाद से है, क्योंकि डॉक्यूमेंटेशन सभी इम्प्लीमेंटेशन पर लागू होता है।


यह वही है जो मैंने किया है, और अब तक लोग इसके साथ ठीक लग रहे हैं। सलाह के लिये धन्यवाद।
मोनिका सेलियो

15

ठीक है, आप इसके लिए निष्पादित नहीं होने जा रहे हैं।

C ++ की दुनिया में शिकायत पांडित्यपूर्णता में से एक नहीं है: यह अस्पष्टता में से एक है। वहाँ पर बहुतआप जिस क्षेत्र के बारे में बात कर रहे हैं, उसके आधार पर वहाँ जंगल में "विधियों" के सारे प्रकार हैं, कि हम में से एक झुंड बाद में गलतफहमी से बचने के लिए मानक शब्दावली से चिपके रहना पसंद करते हैं। इसका मतलब है, मोटे तौर पर, "स्थिर / [गैर-स्थैतिक] [शुद्ध] आभासी / [गैर-आभासी] सदस्य / [मुक्त] कार्य"।

यदि आप इसके बजाय अपने दस्तावेज़ में "विधि" लिखते हैं, तो कुछ C ++ प्रोग्रामर शिकायत कर सकते हैं कि यह वास्तव में स्पष्ट नहीं है कि आप किस बारे में बात कर रहे हैं, या चिंता करें कि क्या आप परिचित नहीं हैं इस C ++ सम्मेलन से अन्य क्या याद कर रहे हैं?

लेकिन मुझे यकीन है कि लाखों पेशेवर C ++ प्रोग्रामर हैं जिन्हें खुद पता नहीं है कि यह भी एक बात है। यह एक बड़ी राजभाषा है।

आप इसके लिए निष्पादित नहीं होने जा रहे हैं।


3

एफिल उन्हें रूटीन या फीचर्स कहता है, C ++ उन्हें मेम्बर फंक्शन्स कहता है , और लगभग (लगभग) हर एक अन्य OO लैंग्वेज, जिसे कंप्यूटिंग के पूरे इतिहास में कभी भी बनाया गया है, C ++ से पहले और बाद में, दोनों ही तरीके उन्हें कहते हैं , ताकि बाद के टर्म को आम तौर पर भी समझा जा सके C ++ (और एफिल) प्रोग्रामर, जब तक कि उन्होंने वास्तव में कभी भी सिमूला, स्मॉलटाक, सेल्फ, ऑब्जेक्टिव-सी, न्यूजकी, जावा, C #, VB.NET, PHP, पायथन, रूबी, ECMASER / JavaScript, Scala, CoffeeScript,… के बारे में नहीं सुना हो


सिवाय इसके कि वे अक्सर उन डोमेन में अलग-अलग चीजों को जोड़ते हैं। यही कारण है कि ओपी पूछ रहा है कि क्या यह डोमेन-विशिष्ट शब्दावली से चिपकना बेहतर है, और क्यों सही उत्तर "हां" है ...
मोनिका के साथ लाइटनेस दौड़

बस एहसास हुआ कि आपने जावास्क्रिप्ट का हवाला देकर मेरी बात साबित कर दी, जिसमें कक्षाएं भी नहीं हैं (इसका ओओ प्रोटोटाइप आधारित है)। तो फिर जावास्क्रिप्ट तरीके अन्य तरीकों के समान कैसे हो सकते हैं? आप जिस पारस्परिक समझदारी का दावा कर रहे हैं, वह वास्तव में मौजूद नहीं है।
मोनिका

प्रोटोटाइप आधारित OOP से कोई फर्क नहीं पड़ता। OOP इस धारणा पर आधारित है कि वस्तुएं संदेश के माध्यम से संवाद करती हैं (जैसे सर्वर एक दूसरे को अनुरोध भेजते हैं), और एक विधि उस तरीके (विधि) को संदर्भित करती है जिसमें कोई विशेष वस्तु किसी दिए गए संदेश पर प्रतिक्रिया देती है। प्रोटोटाइप OO केवल उन तरीकों के साथ अंतर करता है जिनके तरीके विरासत में मिले हैं। क्या बड़ा अंतर पड़ता है स्लॉट आधारित (जैसे पायथन) बनाम संदेश आधारित (जैसे रूबी) ओओपी, और क्या आपके पास देर से या जल्दी बाध्यकारी होगा।
सायलोफ २18 ’
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.