2008-09-19 9 views
92

चिंताओं को अलग करना क्या है?
चिंता क्या है?
इन "अलग-अलग चिंताओं" में कोई ऐप कैसे विभाजित कर सकता है?चिंताओं को अलग करना क्या है?

+0

उचित प्रश्न निर्माण के संबंध में अक्सर पूछे जाने वाले प्रश्न पढ़ें। – FlySwat

+0

यह आलेख अद्भुत है: https://www.viget.com/articles/client-side-separation-of-concerns-are-we-doing-it-wrong और वास्तव में अच्छे तरीके से चिंताओं को अलग करना शामिल है। – Costa

उत्तर

88

चिंताएं सॉफ्टवेयर कार्यक्षमता के विभिन्न पहलुओं हैं। उदाहरण के लिए, सॉफ़्टवेयर का "व्यावसायिक तर्क" एक चिंता है, और इंटरफ़ेस जिसके माध्यम से कोई व्यक्ति इस तर्क का उपयोग करता है वह दूसरा है।

चिंताओं को अलग करना इन चिंताओं में से प्रत्येक के लिए कोड अलग रखना है। इंटरफ़ेस को बदलने से व्यवसाय तर्क कोड को बदलने की आवश्यकता नहीं होनी चाहिए, और इसके विपरीत।

मॉडल-व्यू-कंट्रोलर (एमवीसी) डिज़ाइन पैटर्न बेहतर सॉफ़्टवेयर रखरखाव के लिए इन चिंताओं को अलग करने का एक उत्कृष्ट उदाहरण है।

अधिक जानकारी के लिए

:

+0

इस उत्तर को उन दिनों को अपडेट करने की आवश्यकता है। मेरी राय में, यह किसी समस्या का encapsulation या abstraction के बारे में है। कुछ सीएसएस, जेएस को एक सेक्शन के रूप में सोच सकते हैं जब तक कि एक विशिष्ट समस्या को समाहित किया जा सके। यह उन दिनों स्वीकार्य है। लियोनार्डो सी – Leonardo

+1

असल में, एमवीसी चिंताओं को अलग करने के _फेलर_ का एक अच्छा उदाहरण है, क्योंकि नियंत्रक को मॉडल और दृश्य के बारे में बहुत अच्छी तरह से पता होना चाहिए। –

4

विकिपीडिया:

कंप्यूटर विज्ञान में, चिंताओं (SoC) के अलग होने के अलग विशेषताएं है कि संभव के रूप में छोटे रूप में कार्यक्षमता में ओवरलैप में एक कंप्यूटर प्रोग्राम तोड़ने की प्रक्रिया है। चिंता एक कार्यक्रम में रुचि या फोकस का कोई टुकड़ा है। आम तौर पर, चिंताओं विशेषताओं या व्यवहार के पर्याय हैं। एसओसी की ओर प्रगति परंपरागत रूप से मॉड्यूलरिटी और इंकापुलेशन के माध्यम से प्राप्त की जाती है, सूचना छिपाने की सहायता से।

मैं इसे प्रतिनिधि पाने के लिए पोस्ट नहीं करता हूं, लेकिन आश्चर्य की बात है कि आप एक प्रश्न क्यों पूछेंगे जिसे आसानी से उत्तर दिया जा सकता है।

12

http://en.wikipedia.org/wiki/Separation_of_concerns

कंप्यूटर विज्ञान में, चिंताओं (SoC) के अलग होने के अलग विशेषताएं है कि संभव के रूप में छोटे रूप में कार्यक्षमता में ओवरलैप में एक कंप्यूटर प्रोग्राम तोड़ने की प्रक्रिया है। चिंता एक कार्यक्रम में रुचि या फोकस का कोई टुकड़ा है। आम तौर पर, चिंताओं विशेषताओं या व्यवहार के पर्याय हैं। एसओसी की ओर प्रगति परंपरागत रूप से मॉड्यूलरिटी और इंकापुलेशन के माध्यम से प्राप्त की जाती है, सूचना छिपाने की सहायता से।

1

इस सिद्धांत के अनुसार एक भी समस्या चिंताओं, जो पहचान की जानी चाहिए और जटिलता से निपटने के लिए, और इस तरह मजबूती, अनुकूलनशीलता, रख-रखाव, और पुनर्प्रयोग के रूप में आवश्यक इंजीनियरिंग गुणवत्ता कारकों को प्राप्त करने के अलग के विभिन्न प्रकार शामिल है। Link

0

आम तौर पर, इसका मतलब है कि आप अपने सॉफ़्टवेयर को अलग-अलग क्षेत्रों में अलग करते हैं जिनकी कार्यक्षमता ओवरलैप नहीं होती है।

विकिपीडिया एक अच्छा व्याख्या है:

http://en.wikipedia.org/wiki/Separation_of_concerns

2

नहीं वास्तव में अपने प्रश्न का उत्तर है, लेकिन अगर आप इस में रुचि रखते हैं, वहाँ एक संबंधित डिजाइन पैटर्न निर्भरता कहा जाता है उलटा

मान लें कि आपके पास कक्षा के बाहर से प्रभावित होने वाली विधि के साथ एक वर्ग है, या आपको इसके कई कार्यान्वयन की आवश्यकता है, या तथ्य यह है कि यह उस वर्ग का एक तरीका इकाई परीक्षण को मुश्किल बनाता है। आप उस विधि को पूरी तरह से अलग वर्ग में डाल सकते हैं, और पैरामीटर के रूप में प्रथम श्रेणी के उदाहरण को पास कर सकते हैं।

नकली इंटरफेस का उपयोग करते समय यह विशेष रूप से उपयोगी होता है। आप कठोर कोडित मूल्यों और अपेक्षित परिणामों के साथ अन्य वर्ग के लिए मैक्स में गुजरकर विधि का परीक्षण कर सकते हैं।

+0

मुझे लगता है कि आप निर्भरता इंजेक्शन का मतलब है। –

+0

उन शर्तों के बारे में, विकिपीडिया देखें: [निर्भरता इंजेक्शन] (https://en.wikipedia.org/wiki/Dependency_injection) | [नियंत्रण में उलटा] (https://en.wikipedia.org/wiki/Inversion_of_control) | [निर्भरता उलटा] (https://en.wikipedia.org/wiki/Dependency_inversion_principle)। –

41

आप एचटीएमएल और सीएसएस के बारे में जानते हैं? यह वहीं चिंताओं को अलग कर रहा है।

HTML फ़ाइल (संभवतः एक्सएमएल) दस्तावेज़ संरचना को परिभाषित करता है। सीएसएस फ़ाइल परिभाषित करती है कि दस्तावेज़ को आपकी स्क्रीन पर कैसे प्रस्तुत किया जाता है।

+4

अच्छा उदाहरण! इसे प्रस्तुति परत से नियंत्रक तर्क को अलग करके, विभिन्न कार्यक्रमों के लिए आसानी से अनुकूलित किया जा सकता है (ठीक है, एक मामूली उदाहरण)। –

6

यह विकिपीडिया पर वर्णित है: http://en.wikipedia.org/wiki/Separation_of_concerns

यह एकल जिम्मेदारी सिद्धांत में कहा गया है मूल्य है, कि एक समारोह/वर्ग/विधि केवल एक बात करना चाहिए। यह सब कुछ करना चाहिए, इसे अच्छी तरह से करें, और केवल यह करें।

असल में, यह मतलब है कि आप एक ढेलेदार पेस्ट में एक साथ अपने विचारों को Munge नहीं करना चाहिए, लेकिन आप कोड में सफाई से अपने विचारों को बांट देना चाहिए। यदि आप नहीं करते हैं, तो कोड को बदलना, परीक्षण करना या डीबग करना मुश्किल है। यदि आप उन्हें अलग करते हैं, तो आपके पास बदलने की कुछ स्वतंत्रता है। उदाहरण के लिए, यदि आप अपनी क्वेरी के साथ अपना एचटीएमएल जेनरेटर मर्ज करते हैं, तो आपको स्वरूपण को बदलना मुश्किल लगेगा, और आपको एक अलग क्वेरी पर स्विच करना मुश्किल लगेगा। यदि आप उन्हें अलग करते हैं, तो उन दोनों चीजें आसान हो जाती हैं। या कम से कम, आसान।

0

डाटा कई अलग अलग तरीकों में प्रतिनिधित्व किया जा सकता है और अगर हम अभ्यावेदन के बीच अनुवाद कर सकते हैं इससे कोई फर्क नहीं होगा जो प्रतिनिधित्व हम उपयोग करने के लिए है क्योंकि हम पहुँच सकते हैं और है कि डेटा में हेरफेर करने में सक्षम होना चाहिए चुनें। अगर हमारे पास सार्वभौमिक भाषा अनुवादक था तो इससे कोई फर्क नहीं पड़ता कि किसी ने हमें फ्रेंच, जर्मन या अरबी में समय बताया था; अनुवाद करने की हमारी क्षमता यह सुनिश्चित करेगी कि हम समय जान लेंगे। डेटा शर्तों में तीन महत्वपूर्ण प्रतिनिधित्व हैं जो महत्वपूर्ण हैं:  भौतिक प्रतिनिधित्व कहां और कैसे संग्रहीत किया जाता है;  किस डेटा को संग्रहीत किया जा सकता है, इसके अर्थशास्त्र और अन्य डेटा के साथ संबंधों का तार्किक प्रतिनिधित्व;  और बाहरी प्रतिनिधित्व, यह उपयोगकर्ताओं के लिए कैसा लगता है। यह मानते हुए कि अलग-अलग प्रतिनिधित्वों के बीच अनुवाद करना संभव है, लोगों को डेटा को उनके पसंदीदा तरीके से समझने और उपयोग करने की अनुमति देता है। तो, भौतिक स्तर पर एक डेटाबेस तकनीशियन तार्किक वर्णन या बाहरी विवरण से स्वतंत्र रूप से डेटा के भौतिक भंडारण को अनुकूलित करने में सक्षम होगा, बशर्ते उन्होंने संग्रहीत विवरण और प्रतिनिधित्व के बीच अनुवाद को समायोजित किया हो। इन चिंताओं को अलग करके सामान्य उद्देश्यों के डेटा संग्रहों का निर्माण करना संभव हो जाता है जिनका उपयोग अलग-अलग उपयोगकर्ताओं द्वारा विभिन्न आवश्यकताओं के साथ किया जा सकता है और जो डेटा को डुप्लिकेट करने की आवश्यकता के बिना विभिन्न प्रतिनिधित्वों का उपयोग करते हैं। हम इस पाठ्यक्रम में इन विशेषताओं का पुनरीक्षण करेंगे

संबंधित मुद्दे