मैं हाल ही में कार्यात्मक प्रोग्रामिंग के साथ खेल रहा हूं और दुष्प्रभावों के विषय पर बहुत अच्छे उपचार हैं, उन्हें क्यों शामिल किया जाना चाहिए, आदि। परियोजनाओं में जहां ओओपी का उपयोग किया जाता है, मैं कुछ संसाधन ढूंढ रहा हूं जो कुछ साइड इफेक्ट और/या राज्य को कम करने के लिए रणनीतियों।ओओपी में साइड इफेक्ट्स और स्टेटस से बचने के तरीके सीखने के लिए सबसे अच्छे संसाधन क्या हैं?
इस का एक अच्छा उदाहरण रीस्टफुल वेब सेवा है जो आपको वेब एप्लिकेशन में राज्य को कम करने के लिए रणनीतियों देता है। अन्य क्या मौजूद हैं?
याद रखें कि मैं एक और ओओपी विश्लेषकों/डिजाइन पैटर्न पुस्तक की तलाश नहीं कर रहा हूं (हालांकि अच्छा encapsulation और ढीला युग्मन साइड इफेक्ट्स से बचने में मदद करता है) बल्कि एक संसाधन जहां विषय स्वयं राज्य/साइड इफेक्ट्स है।
कुछ संकलित जवाब
- OOP प्रोग्रामर जो ज्यादातर राज्य के बारे में परवाह तो संगामिति की वजह से है, इसलिए Java Concurrency in Practice पढ़ें। [वास्तव में क्या मैं खोज रहा था] TDD
- उपयोग दुष्प्रभाव अधिक दिखाई बनाने के लिए [मुझे यह पसंद है, उदाहरण के लिए: बड़ा अपने सेटअप कर रहे हैं, अधिक राज्य आप जगह में की जरूरत है अपने परीक्षण = अच्छा चेतावनी चलाने के लिए]
- Command-query separation
- तरीके, केवल एक काम करते हैं शायद वर्णनात्मक नाम का उपयोग करता है, तो वे अपने वस्तु की स्थिति बदलने ताकि यह आसान है और [अच्छा सामान, एक समारोह तर्क जो आम तौर पर भ्रामक बदलने का पक्ष प्रभाव से बचाता है] स्पष्ट।
- Make objects immutable [वास्तव में इस तरह मैं] पैरामीटर के रूप में
- दर्रा मूल्यों, बजाय उन्हें सदस्य चर में संग्रहीत करने का । [मैं इसे लिंक नहीं करता; यह फ़ंक्शन प्रोटोटाइप को बंद कर देता है और इसे स्वच्छ कोड और अन्य पुस्तकों द्वारा सक्रिय रूप से निराश किया जाता है, हालांकि मैं मानता हूं कि यह राज्य के मुद्दे की सहायता करता है]
- उन्हें संग्रहीत करने और उन्हें अपडेट करने के बजाय मूल्यों को दोबारा बदलें [मुझे यह भी वाकई पसंद है; ऐप में मैं प्रदर्शन पर काम करता हूं एक मामूली चिंता है]
- इसी तरह, अगर आप इससे बच सकते हैं तो राज्य की प्रतिलिपि न लें। इसे रखने के लिए एक ऑब्जेक्ट को ज़िम्मेदार बनाएं और दूसरों को वहां पहुंचने दें। [मूल OOP सिद्धांत, अच्छी सलाह]
मुझे समझ में नहीं आता कि आप किस तरह के साइड इफेक्ट्स का मतलब रखते हैं और राज्य के साथ आपका क्या मतलब है (आरईएसटी राज्य में प्रोटोकॉल से संबंधित है, न कि प्रोग्रामिंग प्रतिमान)। – Daff
साइड इफेक्ट्स और स्टेटस "टालना" वास्तव में वास्तव में आपका मतलब नहीं है, मुझे लगता है। – Benjol
आपका मतलब "राज्य" से क्या है, बिल्कुल? किसी ऑब्जेक्ट के किसी भी बिंदु पर किसी ऑब्जेक्ट के उदाहरण सदस्यों के मूल्य, साथ ही ऑब्जेक्ट की कक्षा के किसी भी स्थिर सदस्यों के मान? चूंकि यह ओओपी का एक बहुत ही महत्वपूर्ण हिस्सा है, जब तक कि आप अपने सभी डेटा को वैश्विक चर में स्टोर करना नहीं चाहते हैं। – JAB