उदाहरण चर स्काला में डिफ़ॉल्ट रूप से सार्वजनिक करने के पीछे के दर्शन क्या है। उन्हें डिफ़ॉल्ट रूप से निजी नहीं बनाना चाहिए डेवलपर्स कम गलतियां करते हैं और रचना को प्रोत्साहित करते हैं?स्कैला में डिफ़ॉल्ट रूप से इंस्टेंस चर को सार्वजनिक करने के पीछे दर्शन क्या है?
उत्तर
सबसे पहले, आपको पता होना चाहिए कि जब आप लिखते हैं:
class Person(val name: String, val age: Int) {
...
}
name
और age
उदाहरण चर लेकिन विधियों (getters) पहुंचकर्ता, जो डिफ़ॉल्ट रूप से सार्वजनिक कर रहे हैं नहीं कर रहे हैं।
आप के बजाय लिखते हैं:
class Person(name: String, age: Int) {
...
}
name
और age
केवल उदाहरण चर, जो निजी के रूप में आप उम्मीद कर सकते हैं कर रहे हैं।
स्काला के दर्शन अपरिवर्तनीय उदाहरण चर को पसंद करते हैं, तो हो रही सार्वजनिक accessors तरीकों है और नहीं एक समस्या है।
निजी monoliths प्रोत्साहित करती है। जैसे ही किसी वर्ग में असंबंधित कार्यक्षमता डालना आसान हो जाता है क्योंकि इसे निजी होने के कुछ चर पढ़ने की आवश्यकता होती है, कक्षाएं बढ़ने लगती हैं।
यह सिर्फ एक बुरा डिफ़ॉल्ट और जावा में 1000 से अधिक लाइनों के साथ कक्षाओं के लिए बड़ा कारणों में से एक है।
स्कैला अपरिवर्तनीय रूप से चूक जाता है, जो लोगों को अक्सर प्रतिबंधित करने के लिए निजी का उपयोग करता है (लेकिन हटा नहीं जाता है, क्योंकि क्लास की विधियां अभी भी चर को बदल सकती हैं) जावा में।
-
immutables जो कई स्थानों में पसंद किया जाता है के साथ
- , सार्वजनिक एक समस्या
- का इतना नहीं है आप, ग्राहक कोड बदले बिना getters और setters के साथ एक सार्वजनिक वैल जगह ले सकता है इसलिए आप की जरूरत नहीं है अगर आपको इसकी आवश्यकता हो तो गेटर्स और सेटर्स की अतिरिक्त परत। (वास्तव में आप उस परत मिलता है लेकिन आप इसे समय के सबसे अधिक ध्यान नहीं देते।)
- निजी क्षेत्र + सार्वजनिक setters और getters के जावा विरोधी पैटर्न बहुत वैसे भी
(एक अतिरिक्त संपुटित नहीं है अन्य उत्तरों को पूरक बनाने के लिए देखें :)
फ़ील्ड के जावा के encapsulation के पीछे एक प्रमुख चालक एक समान पहुंच नीति थी, यानी आपको किसी क्षेत्र के रूप में बस लागू किया गया था या किसी विधि द्वारा गणना की गई थी या नहीं, मक्खी। इसका बड़ा उलझन यह है कि प्रश्न में वर्ग के रखरखाव को आवश्यकतानुसार दोनों के बीच स्विच किया जा सकता है, अन्य वर्गों को संशोधित करने की आवश्यकता के बिना।
जावा में, यह आवश्यक है कि सब कुछ क्रम वाक्यात्मक लचीलेपन यदि आवश्यक हो तो एक मूल्य की गणना करने के प्रदान करने के लिए एक विधि के माध्यम से एक्सेस किया गया था।
स्कैला में, विधियों और फ़ील्ड को समकक्ष वाक्यविन्यास के माध्यम से पहुंचा जा सकता है - इसलिए यदि आपके पास अब एक साधारण संपत्ति है, तो इसे सीधे बेनकाब करने के लिए encapsulation में कोई हानि नहीं है, क्योंकि आप इसे बाद में नो-Arg विधि के रूप में बेनकाब करना चुन सकते हैं आपके कॉलर्स को परिवर्तन के बारे में कुछ भी जानने की आवश्यकता है।
- 1. क्या ऑब्जेक्टिव-सी में डिफ़ॉल्ट रूप से इंस्टेंस चर डिफ़ॉल्ट रूप से सेट हैं?
- 2. इंस्टेंस चर और स्थानीय चर के डिफ़ॉल्ट मान
- 3. स्कैला इंस्टेंस चर सबसे अच्छा अभ्यास
- 4. स्कैला: क्या == डिफ़ॉल्ट बराबर है?
- 5. PHP का समग्र डिजाइन दर्शन क्या है?
- 6. स्कैला में कक्षा चर बदलता है क्या?
- 7. क्या PHP ओओपी में सार्वजनिक चर का उपयोग करने के लिए कोई वैध उपयोग केस है?
- 8. सार्वजनिक रूप से
- 9. मैं सार्वजनिक सदस्यों के रूप में स्कैला कन्स्ट्रक्टर तर्कों का खुलासा कैसे करूं? इस उदाहरण को
- 10. जावा कन्स्ट्रक्टर डिफ़ॉल्ट रूप से सार्वजनिक नहीं हैं?
- 11. डिफ़ॉल्ट रूप से जावा अस्थिरता में चर क्यों नहीं हैं?
- 12. क्या वीबीए में सार्वजनिक चर घोषित करना और डिफ़ॉल्ट मान असाइन करना संभव है?
- 13. मैं ग्रहण आईडीई में डिफ़ॉल्ट रूप से स्कैला एप्लिकेशन के रूप में स्कैला प्रोजेक्ट कैसे चला सकता हूं?
- 14. क्या स्कैला में चर के लिए टुपल असाइनमेंट संभव है?
- 15. चेकस्टाइल में डिफ़ॉल्ट रूप से संरक्षित चर क्यों नहीं हैं?
- 16. पर्यावरण चर क्यों डिफ़ॉल्ट रूप से मेकफ़ाइल में सेट चर को ओवरराइड नहीं करते हैं?
- 17. पहुँच चर के पीछे जावास्क्रिप्ट
- 18. गतिशील रूप से आवंटित विधि/विधि के रूप में चर
- 19. क्या सार्वजनिक संपत्ति, मित्र और VB6 में सार्वजनिक चर के बीच अंतर है
- 20. ऑब्जेक्टिव-सी प्रॉपर्टी जो सार्वजनिक रूप से सार्वजनिक रूप से है, लेकिन इसमें निजी सेटर
- 21. सार्वजनिक रूप से Google Hangout को सार्वजनिक रूप से प्रकाशित करना
- 22. gradle doLast दर्शन
- 23. आंशिक पुट को अस्वीकार करने के पीछे क्या औचित्य है?
- 24. क्या गैर-स्थैतिक वर्ग में सार्वजनिक चर होना बुरा है?
- 25. क्यों डिफ़ॉल्ट तर्क पीछे पीछे हैं?
- 26. स्वचालित रूप से सार्वजनिक (जावा)
- 27. सार्वजनिक रूप से पिंग करने योग्य आईपी पते को याद रखना सबसे आसान क्या है?
- 28. क्या स्कैला में एक चर नाम के रूप में "टाइप" शब्द का उपयोग करने का कोई तरीका है?
- 29. क्या यह डिफ़ॉल्ट रूप से UnsafeHeaderParsing को सक्षम करने के लिए एक स्वीकार्य अभ्यास है?
- 30. CodeIgniter नियंत्रक में सार्वजनिक चर के मूल्य को एक्सेस करना
अपने दूसरे उदाहरण में, 'name' और' age' भी सिर्फ निर्माता मापदंडों और नहीं उदाहरण चर, हो सकता है कि वे किस तरह 'Person' के शरीर में उपयोग किया जाता है पर निर्भर करता है। –
हाँ आप सही हैं, मैं जवाब को जटिल नहीं करना चाहता था। – paradigmatic