Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Ruby

अपने रूबी कोड को उन्नत करें: क्लीनर OOP डिज़ाइन के लिए सामंजस्य और कपलिंग में महारत हासिल करें

सामंजस्य (Cohesion) और कपलिंग (Coupling) दो सबसे महत्वपूर्ण ऑब्जेक्ट-ओरिएंटेड सिद्धांत हैं।

सामंजस्य एक क्लास के अंदर सभी मेथड्स के बीच संबंध के बारे में है। क्या वे इंस्टेंस वेरिएबल्स और पैरामीटर्स के उसी सेट का उपयोग कर रहे हैं, सभी एक ही लक्ष्य की ओर मिलकर काम कर रहे हैं? या हर मेथड एक-दूसरे से अलग महसूस होता है?

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

अपने रूबी कोड को उन्नत करें: क्लीनर OOP डिज़ाइन के लिए सामंजस्य और कपलिंग में महारत हासिल करें

ये दोनों अवधारणाएं आपको अपने कोड बेस में हर क्लास को लेंस के एक विशिष्ट सेट के माध्यम से देखने में मदद करती हैं। ये लेंस आपको यह पता लगाने में मदद करते हैं कि आपका क्लास डिज़ाइन कितना ठोस है और आप कहां कुछ बदलाव कर सकते हैं।

सर्वोत्तम परिणामों के लिए आप उच्च सामंजस्य और कम कपलिंग का लक्ष्य रखना चाहते हैं।

सामंजस्य का एक उदाहरण

कम सामंजस्य आपकी पिज़्ज़ा पर एक असामान्य टॉपिंग होने जैसा है, जबकि उच्च सामंजस्य ऐसा लगता है जैसे सब कुछ वहीं है जहां उसे होना चाहिए।

आप इसके लिए एक एहसास प्राप्त कर सकते हैं, लेकिन इसे मापना कठिन है, आप केवल एक संख्या प्राप्त नहीं कर सकते जो आपको बताए कि आपकी क्लास कितनी सामंजस्यपूर्ण है। इसलिए इसे समझने में आसान बनाने के लिए मैं आपको एक कोड उदाहरण दिखाना चाहता हूं जहां यह वास्तव में स्पष्ट है।

यह रहा:

 class Library def lend_book end def return_book end def make_coffee end end 

इस उदाहरण में make_coffee काफी अलग दिखता है, भले ही इस लाइब्रेरी में एक कैफेटेरिया हो, Library क्लास के लिए कॉफी बनाना कोई मायने नहीं रखता 🙂

कैफेटेरिया को इसकी किताबों के बारे में कोई जानकारी नहीं चाहिए, किताब कैसे उधार दें, आदि।

और लाइब्रेरी को यह जानने की जरूरत नहीं है कि कितनी कॉफी बची है या इसे कैसे बनाया जाए।

यही हमारा मतलब है LOW सामंजस्य से।

बेशक:

यह हमेशा इतना स्पष्ट नहीं होता, कभी-कभी आपको ध्यान देना पड़ता है और मेथड नामों से आगे देखना पड़ता है।

  • ये मेथड्स वास्तव में क्या कर रहे हैं?
  • वे किस डेटा के साथ काम कर रहे हैं?
  • वे किन वस्तुओं के साथ सहयोग कर रहे हैं?

ये प्रश्न आपको अपनी क्लास के सामंजस्य के स्तर का अंदाजा देना चाहिए।

आप कम सामंजस्य को कैसे ठीक करते हैं?

आपको उन मेथड्स को निकालना होगा जो इस क्लास से संबंधित नहीं हैं, अक्सर एक नई क्लास में।

कपलिंग का एक उदाहरण

अब आइए कपलिंग पर एक नज़र डालते हैं।

यहां उदाहरण है:

 class ShoppingCart attr_accessor :items def initialize @items = [] end end class Order def process_order(cart) cart.items.map(&:price).inject(:+) end end 

इस उदाहरण में Order ShoppingCart से अत्यधिक कपल्ड है क्योंकि यह इसके बारे में बहुत कुछ जानता है, यह जानता है कि एक items वेरिएबल है और इसके साथ कुछ गणना कर रहा है।

अब यदि आप ShoppingCart के items के कार्यान्वयन को बदलते हैं, तो आपको Order को भी बदलना होगा।

अच्छा नहीं!

हम इसे इस तरह ठीक कर सकते हैं:

 class ShoppingCart attr_accessor :items def initialize @items = [] end def calculate_total items.map(&:price).inject(:+) end end class Order def process_order(cart) cart.calculate_total end end 

हमने गणना के विवरण को वहां ले जाकर कपलिंग कम कर दी है जहां वे संबंधित हैं।

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

यदि आप बैटरी बदल सकते हैं तो वह कम कपलिंग है।

ध्यान दें कि आपको अभी भी कपलिंग के कुछ स्तर की आवश्यकता है, फोन बैटरी के बिना काम नहीं करेगा और Order क्लास यह जाने बिना काम नहीं करेगी कि ग्राहक से कितना शुल्क लेना है।

सारांश

आपने दो बहुत महत्वपूर्ण OOP सिद्धांतों, सामंजस्य और कपलिंग के बारे में सीखा। ये दो अवधारणाएं आपको यह पता लगाने में मदद करती हैं कि एक क्लास में मेथड्स कितनी अच्छी तरह एक साथ काम करते हैं और आपकी क्लास बाकी सिस्टम से कितनी स्वतंत्र है।

आप इसे अभी अपनी किसी एक प्रोजेक्ट पर लागू कर सकते हैं, इसे खोलें और अपनी कुछ क्लासेस को देखें। आप जो सीखा है उसका उपयोग करके उन्हें कैसे सुधार सकते हैं?

पढ़ने के लिए धन्यवाद! शेयर करना और न्यूज़लेटर की सदस्यता लेना न भूलें अगर आपने अभी तक नहीं लिया है 🙂

  1. पिन से अपने नेटफ्लिक्स अकाउंट को सुरक्षित करें: चरण-दर-चरण गाइड पिन से अपने नेटफ्लिक्स अकाउंट को सुरक्षित करें: चरण-दर-चरण गाइड

    चाहे वह हाउस ऑफ कार्ड्स हो या नारकोस! नेटफ्लिक्स हमारा वन-स्टॉप स्थान है जब बात हमारी पसंदीदा फिल्मों या टीवी शो को ऑनलाइन देखने की आती है। इसमें बहुत सारी सामग्री है जिसमें सभी प्रकार के टेलीविजन शो, फिल्में, और डॉक्यूमेंट्री शामिल हैं। नेटफ्लिक्स आपको अपने परिवार में सभी के लिए प्रोफाइल बनाने का अ

  1. iPad और iPhone पर QR कोड कैसे स्कैन करें - एक त्वरित गाइड iPad और iPhone पर QR कोड कैसे स्कैन करें - एक त्वरित गाइड

    2018 की शुरुआत में, टेक दिग्गज Apple ने अपने दिमाग को झकझोर देने वाले फीचर्स iOS 12 को रोल आउट किया। iPad और iPhone पर QR कोड स्कैन करना उन फीचर्स में से एक था जिसे Apple उपयोगकर्ताओं के अनुभव को अगले स्तर पर लाने के लिए जोड़ा गया था। यह फीचर न केवल आपके जीवन को आसान बनाने में सक्षम है बल्कि टिकट, क

  1. चरण-दर-चरण: वेरिफिकेशन कोड का उपयोग करके अपना Gmail पासवर्ड रीसेट करें चरण-दर-चरण: वेरिफिकेशन कोड का उपयोग करके अपना Gmail पासवर्ड रीसेट करें

    कई कारण हैं जिनकी वजह से आप अपना Gmail पासवर्ड रीसेट करना चाह सकते हैं, जिसमें संदिग्ध सुरक्षा हमले से लेकर नई खोजी गई गोपनीयता की इच्छा तक शामिल है। यहां तक कि अगर आपके पास कोई विशेष कारण नहीं है, तो हर कुछ महीनों में अपना पासवर्ड बदलना आमतौर पर आपके खाते को सुरक्षित रखने का एक अच्छा विचार है। यदि