मैं final
हर समय ऑब्जेक्ट विशेषताओं के लिए उपयोग करता हूं ।
final
कीवर्ड दृश्यता अर्थ विज्ञान जब वस्तु विशेषताओं पर इस्तेमाल किया है। असल में, कंस्ट्रक्टर रिटर्न से पहले एक अंतिम ऑब्जेक्ट विशेषता का मान सेट करना होता है। इसका मतलब है कि जब तक आप this
संदर्भ को निर्माणकर्ता से बचने नहीं देते हैं और आप सभी विशेषताओं के final
लिए उपयोग करते हैं , आपकी वस्तु (जावा 5 शब्दार्थ के तहत) ग्वारेंटेड का ठीक से निर्माण किया जाना है, और चूंकि यह अपरिवर्तनीय है, इसलिए इसे सुरक्षित रूप से प्रकाशित किया जा सकता है अन्य धागे के लिए।
अपरिवर्तनीय वस्तुएं केवल धागा-सुरक्षा के बारे में नहीं हैं। वे आपके कार्यक्रम में राज्य के बदलावों के बारे में तर्क करना भी बहुत आसान बनाते हैं, क्योंकि जो बदल सकता है उसका स्थान जानबूझकर और यदि लगातार उपयोग किया जाता है, तो केवल उन चीजों तक सीमित होना चाहिए जो बदलनी चाहिए ।
मैं कभी-कभी तरीकों को अंतिम भी बनाता हूं, लेकिन अक्सर नहीं। मैं शायद ही कभी कक्षाओं को अंतिम बनाता हूं। मैं आम तौर पर ऐसा करता हूं क्योंकि मुझे बहुत कम जरूरत है। मैं आमतौर पर वंशानुक्रम का अधिक उपयोग नहीं करता हूं। मैं इसके बजाय इंटरफेस और ऑब्जेक्ट रचना का उपयोग करना पसंद करता हूं - यह खुद को एक डिजाइन के लिए उधार देता है जो मुझे लगता है कि अक्सर परीक्षण करना आसान होता है। जब आप कंक्रीट कक्षाओं के बजाय इंटरफेस पर कोड करते हैं, तो आपको परीक्षण करते समय इनहेरिटेंस का उपयोग करने की आवश्यकता नहीं होती है, जैसा कि यह है, जेमॉक जैसे फ्रेमवर्क के साथ, मॉक-ऑब्जेक्ट्स को बनाने में बहुत आसान है, क्योंकि यह कंक्रीट कक्षाओं के साथ है।
मुझे लगता है कि मुझे अपनी कक्षाओं के बहुमत को अंतिम रूप देना चाहिए, लेकिन मैंने अभी तक हैबिट में प्रवेश नहीं किया है।