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

C# में सिंगल रिस्पॉन्सिबिलिटी सिद्धांत (SRP) कैसे लागू करें

एक क्लास के पास बदलने का केवल एक कारण होना चाहिए।

परिभाषा: इस संदर्भ में, जिम्मेदारी को बदलने के एक कारण के रूप में माना जाता है।

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

सिंगल रिस्पॉन्सिबिलिटी सिद्धांत लागू करने से पहले

using System;
using System.Net.Mail;

namespace SolidPrinciples.Single.Responsibility.Principle.Before
{
    class Program
    {
        public static void SendInvite(string email, string firstName, string lastname)
        {
            // जिम्मेदारी 1: नाम सत्यापन
            if (String.IsNullOrWhiteSpace(firstName) || String.IsNullOrWhiteSpace(lastname))
            {
                throw new Exception("Name is not valid");
            }

            // जिम्मेदारी 2: ईमेल सत्यापन
            if (!email.Contains("@") || !email.Contains("."))
            {
                throw new Exception("Email is not Valid!");
            }

            // जिम्मेदारी 3: ईमेल भेजना
            SmtpClient client = new SmtpClient();
            client.Send(new MailMessage("Test@gmail.com", email) { Subject = "Please Join the Party!" });
        }
    }
}

सिंगल रिस्पॉन्सिबिलिटी सिद्धांत लागू करने के बाद

using System;
using System.Net.Mail;

namespace SolidPrinciples.Single.Responsibility.Principle.After
{
    internal class Program
    {
        public static void SendInvite(string email, string firstName, string lastname)
        {
            // प्रत्येक जिम्मेदारी अलग क्लास में
            UserNameService.Validate(firstName, lastname);
            EmailService.Validate(email);

            SmtpClient client = new SmtpClient();
            client.Send(new MailMessage("Test@gmail.com", email) { Subject = "Please Join the Party!" });
        }
    }

    // जिम्मेदारी 1: उपयोगकर्ता नाम सत्यापन
    public static class UserNameService
    {
        public static void Validate(string firstname, string lastName)
        {
            if (string.IsNullOrWhiteSpace(firstname) || string.IsNullOrWhiteSpace(lastName))
            {
                throw new Exception("Name is not valid");
            }
        }
    }

    // जिम्मेदारी 2: ईमेल सत्यापन
    public static class EmailService
    {
        public static void Validate(string email)
        {
            if (!email.Contains("@") || !email.Contains("."))
            {
                throw new Exception("Email is not Valid!");
            }
        }
    }
}

SRP के लाभ

  • कम कपलिंग: प्रत्येक क्लास का एक स्पष्ट उद्देश्य होता है
  • बेहतर टेस्टेबिलिटी: प्रत्येक जिम्मेदारी को स्वतंत्र रूप से टेस्ट करें
  • आसान मेंटेनेंस: एक क्षेत्र में बदलाव दूसरों को प्रभावित नहीं करते
  • पुन: उपयोगिता: सत्यापन सेवाओं का अन्य जगहों पर पुन: उपयोग किया जा सकता है
  • पठनीयता: कोड आत्म-दस्तावेजी बन जाता है

SRP उल्लंघन के संकेत

  • क्लास में कई असंबंधित मेथड्स हैं
  • क्लास का नाम "Manager", "Helper", "Utility", "Service" जैसे सामान्य शब्दों में है
  • एक बदलाव के लिए कई असंबंधित फाइलों को छूने की आवश्यकता होती है
  • क्लास को समझाना कठिन है "यह X करता है और Y भी करता है"
  1. - Java Regex का उपयोग करके स्ट्रिंग में मल्टीपल स्पेसेस को सिंगल स्पेस से कैसे बदलें

    मेटाकैरेक्टर \\s स्पेसेस से मिलान करता है और + स्पेसेस की एक या अधिक बार घटना को इंगित करता है, इसलिए, रेगुलर एक्सप्रेशन \\s+ सभी स्पेस कैरेक्टर्स (सिंगल या मल्टीपल) से मिलान करता है। इसलिए, मल्टीपल स्पेसेस को सिंगल स्पेस से बदलने के लिए।इनपुट स्ट्रिंग का उपरोक्त रेगुलर एक्सप्रेशन से मिलान करें और प

  1. - Python 3 में Dictionary का उपयोग करके String Format कैसे करें?

    Dictionary के साथ String Formatting आप Strings को Interpolate करने के लिए Dictionaries का उपयोग कर सकते हैं। इनका एक Syntax होता है जिसमें आपको % और Conversion Character के बीच Parentheses में Key Provide करना होता है। उदाहरण उदाहरण के लिए, यदि आपके पास Key cost में Float Stored है और आप इसे $xxxx

  1. - Python का उपयोग करके String को JSON में Convert कैसे करें?

    JSON String को Dictionary में Convert करना JSON String को Dictionary में Convert करने के लिए json.loads() का उपयोग करें। यह Method Valid JSON String Accept करता है और Dictionary Return करता है जिसमें आप सभी Elements Access कर सकते हैं। उदाहरण >>> import json >>> s = {success: tru