जवाबों:
कल्पना कीजिए कि आपके पास एक कार्यक्रम है जो जारी किया गया है। एक ग्राहक साथ आता है और आपको इसकी एक विशेषता को बढ़ाने के लिए भुगतान करने की पेशकश करता है। धन प्राप्त करने के लिए, आपको नई सुविधा जोड़ने के लिए अपना कार्यक्रम बदलना होगा। कुछ चीजें जो आपके लाभ मार्जिन को प्रभावित करती हैं:
चिंताओं का पृथक्करण आपको इन प्रश्नों के अधिक सकारात्मक उत्तर प्राप्त करने में मदद करता है।
एक अस्पताल को देखें, और उन सभी विभिन्न भूमिकाओं के बारे में सोचें जो एक मरीज को देखभाल प्रदान करने में शामिल हैं: ट्राइएज नर्स, डॉक्टर, मेडिकल असिस्टेंट, टेक, क्लेरिकल स्टाफ, कैफेटेरिया, आदि।
क्या कोई एक व्यक्ति है जो जानता है कि उन सभी लोगों को अपने काम कैसे मिलते हैं? नहीं, क्योंकि यह भारी होगा। उन्हें अलग-अलग जिम्मेदारियों को अलग-अलग भूमिकाओं में अलग करना पड़ता है और उन भूमिकाओं के बीच स्पर्श बिंदु बहुत विशिष्ट होते हैं।
यदि वह किसी कार्यालय में काम करता है, तो इसे एक उदाहरण के रूप में लें, उस कार्यालय के प्रत्येक कर्मचारी की भूमिका की व्याख्या करें, और उससे पूछें, यदि उन कर्मचारियों को उनकी नौकरियों के अनुसार विभाजित नहीं किया जाता है, तो क्या होगा?
मैं देखूंगा कि वह अपने कोड / डिजाइन में SoC को लागू करने में कैसे विफल हो गया और इसे वास्तविक दुनिया के उदाहरण में बदल दिया, जिसके साथ वह संबंधित हो सकता है और यह स्पष्ट रूप से अवांछित है।
उदाहरण के लिए, यदि उसके पास एक ऐसा वर्ग है, जहाँ ग्राहक को उन ग्राहकों के लिए जानकारी के कई टुकड़ों की आपूर्ति करने की आवश्यकता होती है, जो प्रासंगिक नहीं हैं, तो मैं एक बेकरी की सादृश्य का उपयोग करूँगा जहाँ आपको अपना अनाज और खमीर लाना होगा यदि आप खरीदना चाहते हैं ब्रेड।
एक उदाहरण एक HTML डेवलपर हो सकता है जो html, css और जावास्क्रिप्ट को अलग-अलग फाइलों में अलग करना चाहता हो। इस तरह से आप किसी चीज़ के लुक और फील को बदल सकते हैं, बस css को संशोधित कर सकते हैं या किसी चीज़ के व्यवहार को बदलकर जावास्क्रिप्ट फ़ाइल को अलग से लोड किया जाता है। यदि आपके पास एक उत्तरदायी या अनुकूली साइट है तो यह प्रतिमान अच्छी तरह से काम करता है क्योंकि आप एक उपयोगकर्ता व्यूपोर्ट या उपयोगकर्ता एजेंट के आधार पर विभिन्न सीएसएस या जावास्क्रिप्ट लोड कर सकते हैं। हालाँकि अगर आप html या टेम्पलेट को संशोधित करते हैं, तो संभावना है कि या तो सीएसएस या जावास्क्रिप्ट टूट सकता है। ये अलग-अलग चिंताएं भी निर्भर कर सकती हैं।
एक अन्य तरीका यह है कि अपने सभी सीएसएस जावास्क्रिप्ट और HTML को घटकों या मॉड्यूल के समूह में बाँध लें। इसका मतलब है कि आप एक मॉड्यूल में परिवर्तन कर सकते हैं और यह उस पृष्ठ पर अन्य घटकों या मॉड्यूल को प्रभावित नहीं करना चाहिए जो इसके साथ चलता है जो संबंधित नहीं हैं। यहाँ css, js और html फाइल्स को एक ही कंपोनेंट में मर्ज किया जाता है जिसे यूनिट टेस्ट किया जा सकता है। तो चिंताओं का पृथक्करण व्यक्तिगत परमाणु घटकों के रूप में आता है जिन्हें मार्कअप, स्टाइल और व्यवहार तत्वों के अलगाव के बजाय इकाई परीक्षण किया जा सकता है। यह दूसरा दृष्टिकोण अधिक जटिल वेब एप्लिकेशन बनाने के लिए अधिक अनुकूल है।
संपादित करें। चूंकि मुझे इस टिप्पणी पर नकारात्मक प्रतिक्रिया मिली है, मुझे लगा कि मैं इसे फिर से देखूंगा और अपने कुछ पोव को योग्य बनाने का प्रयास करूंगा। दुर्भाग्य से यहां कोई भी प्रतिक्रिया विशेष रूप से रचनात्मक नहीं है, लेकिन मैंने एक दिलचस्प चर्चा कहीं और देखी, जो रिएक्ट को देखता है, वेब विकास में वर्तमान गर्म तकनीक, एक वास्तविक दुनिया का उदाहरण है, और पूछता है कि क्या यह चिंताओं को अलग करता है या विशेष रूप से अगर यह एक को तोड़ता है सिद्धांत के पंख के ठोस वस्तु उन्मुख डिजाइन पद्धति।
तकनीकी जावास्क्रिप्ट डेवलपर परिप्रेक्ष्य
NO, because JSX is a view language. That's one responsibility.
BUT, this implies that the JS developer is self-enforcing SoC/SRP on his own architecture by not mixing ViewModel concerns in his JSX. This type of vigilance "in the wild" is highly suspect because JSX involves the full JavaScript dialect.
UX / UI डिज़ाइनर परिप्रेक्ष्य
YES, because JSX mixes Semantic Content (Model) with Behavior (Controller)
YES, because the intrusion, specifically of JavaScript, into the Semantic Model makes it difficult or impossible for me to play my role and leverage my expertese and skills.
टीम परिप्रेक्ष्य
NO, if both...
Separate files are used for the View (JSX) and ViewModel (JS).
Either there aren't UI/UX/Designers involved, or they are productive working directly with JSX (not very common).
YES, if either...
Everything is in the same file, causing problems for version control or productive use of modern editors.
Members of the team who are comfortable with HTML/CSS but less capable with JavaScript are excluded because of mixture or roles.
पेज पर भी फेसबुक के पीट हंट से एक दिलचस्प प्रस्तुति का लिंक है, जहां वह घटकों के बारे में बात करता है न कि टेम्पलेट, और रूपरेखा के चिंताओं को अलग करने के बजाय भाषा अनुप्रयोग में चिंताओं को अलग करता है, अर्थात टेम्प्लेट, सीएसएस और जावास्क्रिप्ट। आदि।
अपने आवेदन की भाषा में अपनी चिंताओं को अलग करने के संबंध में यह आपके पैटर्न को अलग-अलग करने या अपने कोड को मॉड्यूलर रूप में अलग करने के लिए उपयोग कर सकता है जिसमें यूनिट परीक्षण किया जा सकता है आदि।
इसलिए संक्षेप में, चिंताओं को अलग करना आपकी भूमिका या दृष्टिकोण पर निर्भर कर सकता है, जैसा कि और कहीं उल्लेख किया गया है।