सर्वोत्तम अभ्यास समय के साथ बदल सकते हैं।
मैं किसी भी तरह विवादास्पद दोनों सार्वजनिक क्षेत्रों के लिए दो उपयोग मामलों में सोच सकता हूं।
एडम बिएन कहते हैं in this post कि यदि आप डीटीओ का उपयोग कर रहे हैं, तो आप निजी + गेटर + सेटर का उपयोग नहीं कर सकते हैं बल्कि केवल सार्वजनिक क्षेत्र का उपयोग नहीं कर सकते हैं। इस तरह आप सुनिश्चित हैं कि बिना किसी बदलाव के डेटा को ट्रांसपोर्ट किया गया है। लेकिन उसी पंक्ति में वह कहते हैं कि इससे आपको बहुत सारी बैठकें मिलती हैं, यह बताते हुए कि आप इसे क्यों करते हैं ...
गैर निरंतर सार्वजनिक क्षेत्रों के लिए एक अन्य उपयोग सार्वजनिक अंतिम फ़ील्ड (कन्स्ट्रक्टर में प्रारंभ) का उपयोग कर अपरिवर्तनीयता सुनिश्चित करने के लिए है। जैसे
public Person{
public final String lastName;
public final String firstName;
public Person(String firstName, String lastName){
this.firstName = firstName;
this.lastName = lastName;
}
}
अपनी कक्षाओं बनाना एक नया सबसे अच्छा अभ्यास, codemonkeyism जैसी जगहों में सलाह दी किसी प्रकार का है।
लेकिन जब तक आप कोड का पूर्ण स्वामी बन गई हैं और/या आप नए मानकों को पूरा करने के लिए मजबूर कर सकते हैं, तो आप सार्वजनिक/संरक्षित क्षेत्रों के उपयोग से परहेज रखना चाहिए ...
स्रोत
2012-03-28 17:12:32
मैं अपने परिसर के साथ सहमत नहीं हैं। 'संरक्षित' दृश्यता के माध्यम से सदस्य चर को उप-वर्ग में बेनकाब करने के वैध कारण हैं। – Richard
@ रिचर्ड मुझे 'संरक्षित' का उपयोग करने के लिए बिल्कुल * कब * जानना होगा और अभी भी सर्वोत्तम अभ्यास/अच्छा और सुंदर कोड लिखना होगा। मैंने इसे अतीत में उपयोग किया है, लेकिन ऐसा कभी नहीं लगता था कि ऐसा करने का एक बहुत ही मजबूत कारण था, सिवाय इसके कि यह आसान था और मैं माता-पिता वर्ग और उप-वर्ग दोनों को लागू कर रहा था। –
@Matthieu संक्षेप में, संरक्षित क्षेत्र का उपयोग हमेशा संरक्षित गेटर/सेटर + निजी क्षेत्र द्वारा प्रतिस्थापित किया जा सकता है। – assylias