मुझे लगता है कि आप पढ़ रहे हैं केवल गुण, या कम से कम संपत्ति पाने वालों के बारे में बात कर रहे हैं , क्योंकि एक संपत्ति सेटर लगभग हर उदाहरण में, साइड-इफेक्ट होने वाला है। अन्यथा यह बहुत उपयोगी नहीं है।
सामान्य तौर पर, एक अच्छा डिजाइन कम से कम आश्चर्य के सिद्धांत का पालन करता है । ऐसी चीजें न करें जो कॉल करने वाले आपसे करने की उम्मीद नहीं कर रहे हैं, खासकर अगर उन चीजों से भविष्य के परिणाम बदल सकते हैं ।
सामान्य तौर पर , इसका मतलब है कि संपत्ति पाने वालों पर दुष्प्रभाव नहीं होना चाहिए।
हालांकि , हम "साइड इफेक्ट" से क्या मतलब है, इसके बारे में सावधान रहें ।
एक दुष्प्रभाव , तकनीकी रूप से, राज्य के किसी भी संशोधन है। यह सार्वजनिक रूप से सुलभ राज्य हो सकता है, या ... यह पूरी तरह से निजी राज्य हो सकता है।
आलसी / स्थगित लोडर राज्य का एक उदाहरण है जो लगभग विशेष रूप से निजी है। जब तक यह उस संसाधन को मुक्त करने के लिए कॉलर की जिम्मेदारी नहीं है, तब तक आप वास्तव में आस्थगित आरंभीकरण का उपयोग करके आश्चर्य और जटिलता को कम कर रहे हैं । एक कॉलर को आमतौर पर आंतरिक संरचना के प्रारंभ के स्पष्ट संकेत की उम्मीद नहीं होती है। तो, आलसी आरंभीकरण उपरोक्त सिद्धांत का उल्लंघन नहीं करता है।
एक अन्य उदाहरण एक सिंक्रनाइज़ संपत्ति है। थ्रेड-सुरक्षित होने की विधि के लिए, इसे अक्सर महत्वपूर्ण अनुभाग या म्यूटेक्स द्वारा संरक्षित करना होगा। एक महत्वपूर्ण खंड में प्रवेश करना या म्यूटेक्स प्राप्त करना एक दुष्प्रभाव है; आप राज्य को संशोधित कर रहे हैं, आमतौर पर वैश्विक राज्य। हालांकि, यह दुष्प्रभाव बहुत खराब प्रकार के आश्चर्य को रोकने के लिए आवश्यक है - डेटा के आश्चर्य को संशोधित किया जा रहा है (या बदतर, आंशिक रूप से संशोधित) एक और धागे द्वारा।
इसलिए मैं प्रतिबंध निम्न के थोड़ा ढीला होगा: संपत्ति पढ़ता नहीं होना चाहिए दिखाई दुष्प्रभाव या साइड इफेक्ट है जो उनके अर्थ विज्ञान बदल ।
यदि किसी कॉल करने वाले के लिए कभी भी प्रभावित होने का कोई संभव तरीका नहीं है, या यहां तक कि एक साइड इफेक्ट के बारे में पता है, तो वह साइड इफेक्ट कोई नुकसान नहीं कर रहा है। यदि आपके लिए किसी विशेष साइड-इफेक्ट के अस्तित्व को सत्यापित करने के लिए परीक्षण लिखना असंभव है, तो यह एक निजी कार्यान्वयन विवरण के रूप में लेबल करने के लिए पर्याप्त स्थानीय है, और इस प्रकार बाहरी दुनिया के लिए कोई वैध चिंता नहीं है।
लेकिन सावधान रहें; अंगूठे के एक नियम के रूप में, आपको साइड इफेक्ट्स से बचने की कोशिश करनी चाहिए , क्योंकि अक्सर आप निजी कार्यान्वयन के बारे में जो सोच सकते हैं वह अप्रत्याशित रूप से लीक हो सकता है और सार्वजनिक हो सकता है।