मैं अपने राय दे देंगे, और शायद मैं इसके लिए एक लात मिलेगा, लेकिन मैं से परेशान नहीं है संरक्षित या रूबी में निजी। हकीकत यह है कि, रूबी आपको वयस्क की तरह व्यवहार करती है, अगर आप कक्षा से बाहर एक निजी विधि चलाने के लिए चाहते हैं, तो आप (areways) कर सकते हैं। आप कक्षा के बाहर संरक्षित तरीकों को चला सकते हैं। आप स्थिरांक को फिर से सौंप सकते हैं ... मूल रूप से आप जो भी चाहें कर सकते हैं।
और यही कारण है कि मुझे यह पसंद है, यह आपकी ज़िम्मेदारी है।
- का संकेत आपको नहीं लगता कि कि एक उपभोक्ता की आवश्यकता होगी: मेरा लग रहा है कि के रूप में संरक्षित या निजी आपको दो बातें कर रहे हैं कुछ चिह्नित करने के लिए, है।
- दूसरा अनुमान लगाता है कि किसी और को क्या चाहिए।
और इसके अलावा, आप इसे कठिन परीक्षण करने के लिए कर रहे हैं, के रूप में यह निजी तरीकों का परीक्षण एक असली दर्द हो सकता है
उन पिछले दो कारणों के लिए (इसके चारों ओर तरीकों की What's the best way to unit test protected & private methods in Ruby? देखें), मैं ' उनके साथ परेशान नहीं है। यदि आप वास्तव में अपने वर्ग/विधियों और उपभोक्ताओं (चाहे वे कोड या डेवलपर हों) के बीच किसी प्रकार की बाधा चाहते हैं तो अन्य, अधिक प्रभावी तरीके हैं (प्रॉक्सी, obfuscation, एन्क्रिप्शन, पासवर्ड संरक्षित विधियों आदि)। अन्यथा, उन्हें आपके द्वारा उपयोग किए जाने वाले उसी टूल तक क्यों न पहुंचें?
यह मेरे लिए थोड़ा सा लगता है ... आपका ** तीसरा बिंदु **। एक उप-वर्ग आंतरिक रूप से अपने सुपरक्लास के 'निजी' तरीकों तक पहुंच सकता है। एक 'संरक्षित' विधि आपको उसी वर्ग के किसी ऑब्जेक्ट में पास करने और उस ऑब्जेक्ट पर संरक्षित विधियों को निष्पादित करने की क्षमता प्रदान करती है। – slindsey3000
http://weblog.jamisbuck.org/2007/2/23/method-visibility-in-ruby "संरक्षित विधियों को वास्तव में कभी भी कहा जा सकता है जब रिसीवर एक ही वर्ग के 'स्वयं' के रूप में होता है" – clyfe