در توسینسو تدریس کنید

و

با دانش خود درآمد کسب کنید

آموزش اصول SOLID در برنامه نویسی قسمت 1 : مقدمه و SRP

مفهوم S.O.L.I.D در برنامه نویسی چیز جدیدی نیست و به سال ها قبل بر میگردد. موضوعی که دانستن آن برای هر برنامه نویسی امری مهم بوده و می تواند شیوه نوشتن کدهای شما را کاملاً تغییر دهد. من خودم به شخصه مقالات و مطالب زیادی را مطالعه کردم و بتوانم درک دقیقی از این موضوع داشته باشم و تصمیم دارم در این مقاله، اصول S.O.L.I.D رو برای شما با زبانی ساده توضیح دهم. مثال هایی که در این مطلب زده خواهد شد، با زبان سی شارپ می باشد که لازمه درک آن ها داشتن دانش مقدماتی از زبان سی شارپ است. برای آشنایی با زبان سی شارپ می توانید سری آموزش مقدماتی زبان سی شارپ که توسط بنده در وب سایت قرار داده شده را مطالعه کنید.

آشنایی با قواعد SOLID در برنامه نویسی :: مقدمه و Single Reponsibility Principle


چرا باید S.O.L.I.D را یاد بگیرم؟

بعضی افراد میگن که من برنامه نویسی شئ گرا رو بلدم، پس چه نیازی به یادگیری S.O.L.I.D هست؟ ما باید در ابتدا این اصول رو از هم تفکیک کنیم! این سوال مثل این هست که فردی بگه من ابزارهای چوب بری رو در اختیار دارم، پس چه نیازی هست که برم علم چوب بری رو یاد بگیرم! شما با یاد گیری برنامه نویسی شئ گرا، در حقیقت یاد میگیرد که چگونه از کلاس ها استفاده کنید، چگونه برای یک کلاس فیلد یا خصوصیت تعریف کنیم و ...، اما اینکه بتوانیم از این قابلیت ها در مسیر درست استفاده کنیم موضوع دیگری است، SOLID در حقیقت یکسری قواعد رو برای ما تعریف میکنه که مثل یک مکمل برای برنامه نویسی شئ گرا عمل می کنند و با رعایت این قوانین ما می توانیم به تکنیک های برنامه نویسی شئ گرا رو به صورت صحیح استفاده کنیم.

اما موضوع دیگری نیز وجود دارد! ما مبحثی دیگری به نام الگوهای طراحی داریم که نباید با مبحث S.O.L.I.D اشتباه شود. الگوهای طراحی، مجموعه ای از کدها و راه حل های از پیش نوشته شده هستند که هر کدام مشکلی را حل می کنند، یعنی در شرایطی مشخص می توان از الگوهای طراحی برای حل مشکل استفاده کرد. اما همانطور که گفته شد، SOLID مجموعه ای از قواعد رو تشکل می دهند.اصول SOLID، مانند برنامه نویسی شئ گرا متعلق به یک زبان برنامه نویسی خاص نیست، یعنی هر زبانی که از اصول شئ گرایی پشتیبانی کند، اصول SOLID در آن قابل اعمال است.اما بهتره به سراغ موضوع اصلی مطلبمون بریم، هدف ما آشنایی با قواعد پنج گانه SOLID است، SOLID مخفف پنج عبارت است که این عبارات به شرح زیر می باشند:


  1. کاراکتر S برای Single Responsibility Principle
  2. کاراکتر O برای Open/Closed Principle
  3. کاراکتر L برای Liskov Substitution Principle
  4. کاراکتر I برای Interface Segregation Principle
  5. کاراکتر D برای Dependency Inversion Principle

در طول پنج مطلب جداگانه به بررسی هر یک از این مفاهیم خواهیم پرداخت.


قاعده Single Responsibility

برنامه ای که قصد نوشتن آن را دارید باید مانند یک سازمان قانون مند عمل کند! یک سازمان موفق را در نظر بگیرید، تمامی وظایف در این سازمان مشخص است، هر شخص یکسری وظایف دارد و هیچ کس در وظایف شخص دیگر دخالت یا ورود نمی کند. اگر شخصی نیاز به انجام عملیات در حوزه دیگری را داشته باشد، این وظیفه به شخص مورد نظر در آن بخش محول میشود. برنامه شما هم باید به همین صورت عمل کند. یعنی هر یک از بخش های برنامه شما دقیقاً و صرفاً یک وظیفه انجام یک عملیات خاص را انجام می دهد.

بعضی وقت ها که به گذشته بر میگردم و برنامه هایی که قبلاً نوشتن رو مرور میکنم، ناگهان یک Method و میبینم که حدود 400 خط کد براش نوشته شده! اما با تفکری که الان دارم، به نظرم متدها بیشتر از 10 الی 15 خط کد نیاز ندارن! به این خاطر که هر کلاس و هر Method از برنامه ای که قصد نوشتن اون رو دارم باید فقط یه وظیفه مشخص رو انجام بده و در صورت وابسته بودن به یک عملیات دیگه، انجام اون عملیات باید به بخش مربوطه تو نرم افزار محول بشه. با یک مثال این موضوع رو بیشتر بررسی میکنیم، کد زیر را در نظر بگیرید:


public class CustomersRepository
{
    public void Add()
    {
        try
        {
            // add customer to database
        }
        catch (Exception ex)
        {
            System.IO.File.WriteAllText("d:\\errors.txt", ex.ToString());
        }
    }
}

در کد بالا، کلاسی با نام CustomersRepository داریم که عملیات اضافه کردن مشتری به Database در آن انجام می شود. اما در صورتی که خطایی در این پروسه رخ دهد، خطای مربوطه در فایلی ثبت می شود. اما مشکل کجاست؟ متد Add در کلاس StudentRepository وظیفه ای غیر از وظیفه اصلی ای که برایش مشخص شده، یعنی اضافه کردن مشتری را انجام می دهد.

Overload


با توجه به قاعده Single Reposibility، کد بالا می بایست اصلاح شده و وظیفه ثبت خطا به قسمت دیگری از برنامه محول شود. برای اینکار بتدا کلاس دیگری برای عملیات ثبت خطاها تعریف میکنیم:

public class FileLogger
{
    public void Log(string content)
    {
        System.IO.File.WriteAllText("d:\\errors.txt", content);
    }
}

در قدم بعدی کلاس CustomersRepository را طوری تغییر می دهیم که وظیفه ثبت خطا را به کلاس FileLogger محول کنید:

public class CustomersRepository
{
    FileLogger logger = new FileLogger();

    public void Add()
    {
        try
        {
            // add customer to database
        }
        catch (Exception ex)
        {
            logger.Log(ex.ToString());
        }
    }
}

با تغییرات بالا، قاعده Single Reponsibility را در کد خود پیاده کردیم. در قسمت بعدی، با قاعده Open Closed آشنا خواهیم شد. ITPRO باشید

نویسنده: حسین احمدی
منبع: انجمن تخصصی فناوری اطلاعات ایران
#تکنیک_های_کد_نویسی #قاعده_single_responsibility #قواعد_برنامه_نویسی #قواعد_solid_در_برنامه_نویسی
عنوان
1 آموزش اصول SOLID در برنامه نویسی قسمت 1 : مقدمه و SRP رایگان
2 آموزش اصول SOLID در برنامه نویسی قسمت 2 : Open Closed رایگان
3 آموزش اصول SOLID در برنامه نویسی قسمت 3 : Liskov Substitute رایگان
4 آموزش اصول SOLID در برنامه نویسی قسمت 4: Interface Segregate رایگان
5 آموزش اصول SOLID در برنامه نویسی قسمت 5 : Dependency Inverse رایگان
زمان و قیمت کل 0″ 0
1 نظر
سبحان مظفری

سلام

خیلی ممنون برای مطلبتون

واقعا هر برنامه نویسی باید این مفاهیم رو بلد باشن

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره پاییزه می تونی امروز ارزونتر از فردا خرید کنی ....