अद्यतन - कृपया true explanation of protected
/private
in Ruby पर लिंक के नीचे दी गई टिप्पणी देखें। यह वास्तव में मेरे जावा दिनों से एक गहरी बैठे पूर्वाग्रह था। मेरे उत्तर में एकमात्र महत्वपूर्ण हिस्सा यह है कि नियंत्रक विधियां जो क्रियाएं नहीं हैं public
नहीं होनी चाहिए (या कम से कम आपके मार्गों को उनकी रक्षा करनी चाहिए)।
एकल तालिका विरासत मॉडल टियर में protected
सहायक उपकरण का एक आदर्श उदाहरण है, क्योंकि यह वहां विरासत के सबसे आम उपयोगों में से एक है।
नियंत्रक स्तरीय में, ApplicationController
पर परिभाषित सहायक तरीकों protected
के रूप में चिह्नित किया जाना चाहिए - अगर वे private
थे अन्य नियंत्रकों द्वारा पहुंच बनाने के लिए सक्षम नहीं होगा, लेकिन अगर वे कर रहे हैं public
रेल को गतिविधियों के रूप में व्यवहार करेगा।
व्यक्तिगत रूप से, मुझे लगता है कि मैं रेल अनुप्रयोगों में भी अपने कई मित्रों और सहकर्मियों से अधिक कक्षा विरासत का उपयोग करता हूं। क्योंकि मैं अक्सर इसका उपयोग करता हूं (और मेरे जावा दिनों से बाहर आ रहा हूं), मैं सभी सहायक तरीकों के लिए protected
का समर्थन करता हूं (आमतौर पर स्वयं) जो कक्षा को विस्तारित करना चाहता है - जब तक कि मैं वास्तव में वास्तव में शर्मिंदा नहीं हूं, तब तक मैं इसे private
चिह्नित करता हूं। :)
स्रोत
2009-05-22 20:46:45
इससे बहुत समझदारी होती है। (यकीन नहीं है कि एसटीआई क्या है)। –
"एप्लिकेशन नियंत्रक पर परिभाषित सहायक विधियों को संरक्षित के रूप में चिह्नित किया जाना चाहिए - यदि वे निजी थे तो अन्य नियंत्रक उन्हें एक्सेस नहीं कर पाएंगे" - fyi, यह गलत है। उदाहरण यहां देखें: http://pastie.org/842898। रुबी में संरक्षित/निजी 'आत्म' और रिसीवर के बारे में है, विरासत नहीं। "ध्यान दें कि, जावा जैसी भाषाओं के विपरीत, विरासत रूबी में विधि दृश्यता निर्धारित करने में बिल्कुल कोई भूमिका नहीं निभाती है।" - http://weblog.jamisbuck.org/2007/2/23/method-visibility-in-ruby –
धन्यवाद, जॉर्डन। आप सही हे। मैंने थोड़ा नोट जोड़ा है। –