2014-05-16 14 views
5

मैं सिर्फ अगर यह एक वर्ग उदाहरण के भीतर उचित वर्ग चर गेटर तरीकों का उपयोग कर का उपयोग करने के जानने के लिए उत्सुक हूँ और भीतर चर प्रत्यक्ष चर का उपयोग की तुलना में बेहतर उपयोग करने के लिए गेटर विधि कॉल है अगर वहाँ प्रत्यक्ष अभिगम के साथ किसी भी ठोस प्रदर्शन मतभेद हैं । खासकर उन परिस्थितियों में जहां जेवीएम में कई वस्तुओं को उत्पन्न होने की उम्मीद है।एक वर्ग

+0

यदि आपको परिवर्तनीय पहुंच प्रतिबंधित करने की आवश्यकता है (उदाहरण के लिए, केवल परिवर्तनीय पढ़ने के लिए) या परिवर्तनीय परिवर्तन पर कुछ क्रिया (अधिसूचना) करने के लिए - गेटटर/सेटर्स का उपयोग करना बेहतर है। –

+2

यह http://stackoverflow.com/q/8466790/217324 का एक डुप्लिकेट है। हालांकि मैं चुने गए उत्तर से सहमत नहीं हूं (मैंने एक विपरीत राय पोस्ट की है)। –

+0

@NathanHughes आपका उत्तर बिल्कुल सही बिंदु पर है कि मेरी इच्छा है कि उत्तर के रूप में टिप्पणी स्वीकार करने का कोई तरीका था। – Bwire

उत्तर

12

जावा में यह वर्ग बाहर से गेटर/setters के माध्यम से सभी क्षेत्रों तक पहुँचने के लिए एक सम्मेलन है। कक्षा के अंदर से, आप आमतौर पर सीधे फ़ील्ड तक पहुंचते हैं। हालांकि, आप उन्हें गेटटर/सेटर के माध्यम से भी एक्सेस कर सकते हैं।

यह जानना महत्वपूर्ण है कि यह सिर्फ एक सम्मेलन है। कई अन्य प्रोग्रामिंग भाषाओं में ऐसे सख्त नियम या अन्य अवधारणाएं नहीं हैं। तो आपको ऐसा करने के लिए मजबूर नहीं किया जाता है। लेकिन यह एक अच्छा अभ्यास है।

और: प्रदर्शन को ध्यान में रखें! गेटर्स/सेटर्स का उपयोग करने से आपके ऐप के प्रदर्शन को प्रभावित नहीं होगा। JVM/Java को इस तरह काम करने के लिए डिज़ाइन किया गया है। प्रत्येक जेवीएम आपके कोड को अनुकूलित करेगा और गेटर्स/सेटर्स को बहुत प्रभावी तरीके से संभालेगा। स्पष्ट और अच्छे पठनीय कोड लिखने का प्रयास करें।

2

मैं आपके प्रश्न का उत्तर तीन भागों में दूंगा:

1।

एक सार्वजनिक सदस्य वर्ग है, जो व्यावहारिक दृष्टिकोण के लिए इसका मतलब है कि "संभावित कहीं भी" बाहर से पहुँचा जा सकता है: डायरेक्ट एक्सेस (सार्वजनिक सदस्य) सबसे खराब समाधान है। यदि सार्वजनिक क्षेत्र में कुछ गड़बड़ हो जाती है, तो अपराधी कहीं भी हो सकता है, और इसलिए बग को ट्रैक करने के लिए, आपको बहुत सारे कोड देखना पड़ सकता है।

2। Encapsulation (निजी सदस्य):

इसके विपरीत, एक निजी सदस्य, केवल उसी कक्षा के अंदर से ही पहुंचा जा सकता है, इसलिए यदि कुछ उसके साथ गलत हो जाता है, तो आम तौर पर केवल एक स्रोत फ़ाइल देखने के लिए होती है। आप अपने प्रोजेक्ट में कोड का एक मिलियन लाइनें है, लेकिन अपनी कक्षाओं छोटे रखा जाता है, तो यह 1000

3 का एक पहलू से अपने बग ट्रैकिंग प्रयास कम कर सकते हैं। Getters और setters अत्यधिक overused रहे हैं:

निजी क्षेत्रों बनाना और फिर आईडीई का उपयोग कर स्वचालित रूप से इन सभी क्षेत्रों के लिए getters और setters उत्पन्न करने के लिए लगभग के रूप में सार्वजनिक क्षेत्रों का उपयोग कर के रूप में बुरा है। अति प्रयोग के लिए

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

निष्कर्ष: प्रत्येक और हर क्षेत्र के लिए getters और सेटर बनाने, क्षेत्र चर के लिए सीधी पहुँच सार्वजनिक क्षेत्रों के उपयोग पर पसंद किया जाता है प्रतिबंधित करने के लिए हालांकि, accessors (getters और setters) की

उपयोग overkill है। यह स्थिति पर भी निर्भर करता है, कभी-कभी आप सिर्फ एक गूंगा डेटा ऑब्जेक्ट चाहते हैं। एक्सेसर्स को उस क्षेत्र के लिए जोड़ा जाना चाहिए जहां उन्हें वास्तव में आवश्यक है। एक वर्ग को अन्य वर्गों द्वारा छेड़छाड़ की जाने वाली राज्य के भंडार के बजाय अपने राज्य का उपयोग करने के लिए बड़े व्यवहार का खुलासा करना चाहिए।

-1

मेरा मानना ​​है कि गेटर विधि कॉल प्रत्यक्ष कॉल से बेहतर है क्योंकि यह दोनों आंतरिक कक्षाओं और कक्षाओं के बाहर के सभी संदर्भों को खोजने में मदद करेगा।

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