मेरे पास एक संग्रह है। WeakReference की सिंक्रनाइज़लिस्ट, _components;जावा में, सिंक्रनाइज़ ब्लॉक के भीतर वापसी मूल्य खराब शैली की तरह लगता है। क्या यह वास्तव में मायने रखता है?
मैं निम्नलिखित की तरह कुछ लिखा है, उम्मीद कर शिकायत करने के लिए संकलक:
public boolean addComponent2(Component e) {
synchronized (_components) {
return _components.add(new WeakReference<Component>(e));
}
}
लेकिन संकलक पूरी तरह से संतुष्ट है। ध्यान दें कि List.add() सत्य लौटाता है। तो ठीक है, सिंक्रनाइज़ ब्लॉक से कोई भी निकास लॉक जारी करता है, लेकिन क्या यह अजीब लग रहा है? यह एक लूप में वापसी का उपयोग करने के समान, ब्लॉक में "छेद" की तरह है।
क्या आप इस तरह के कोड को बनाए रखने में खुश रहेंगे?
मैं आमतौर पर भी ब्लॉक के अंदर से लौटने जबकि (वास्तव में, मैं अपने आप को आदिम सिंक ब्लॉकों का उपयोग कर नहीं पाते , लेकिन फिर भी) शुरुआत से ऐसा करने में कुछ लाभ हो सकता है। यदि आपके पास केवल सिंच ब्लॉक है, और बाद में कुछ अतिरिक्त कोड जोड़ना है, लेकिन उस कोड को सिंक्रनाइज़ेशन की आवश्यकता नहीं है, तो आप इसे पहले से ही तोड़ चुके हैं। यदि यह टूटा नहीं गया है, तो जल्दबाजी में भावी देवता सिंक ब्लॉक के अंदर अतिरिक्त कोड जोड़ सकते हैं क्योंकि यह आसान है, जो मॉनीटर को अनावश्यक रूप से जोड़ सकता है। तो मैं अभी भी अंदर फॉर्म वापस कर दूंगा, लेकिन भविष्य के लिए कुछ मामूली लाभ है। – corsiKa
@corsiKa: भविष्य के लिए केवल लाभ है * यदि * उस परिवर्तन की आवश्यकता है। यदि इसकी आवश्यकता नहीं है, तो यह उस कोड को * पढ़ने * बनाता है जो पूरे समय थोड़ा कठिन होता है, आईएमओ। –