</>مدرسه زیب‌موجیاد بگیر، تمرین کن، بساز
مدرسهC#درس 5
درس 5 از 8 · ۷۰ دقیقه

کلاس، record، interface و تزریق وابستگی

مدل immutable، سرویس سفارش و interface مخزن را می‌سازی تا منطق از دیتابیس و UI جدا بماند.

۰امتیاز شما
نقشه این درس

بعد از این درس چه کاری می‌توانی انجام بدهی؟

  • record و class را درست انتخاب کنی
  • interface کوچک طراحی کنی
  • وابستگی را از سازنده دریافت کنی
به زبان زندگی واقعی

C# را ساده بفهم

C# مثل یک کارگاه مهندسی با قراردادهای روشن است؛ نوع‌ها، کلاس‌ها و interfaceها کمک می‌کنند اجزای اپ، وب‌سرویس یا بازی جدا اما هماهنگ کار کنند.

نکته مهم برای شروع C#

interface را برای هر class به‌صورت مکانیکی نساز؛ آن را در مرز تغییر واقعی یا آزمون‌پذیری معرفی کن.

چرا مهم است؟ برای داده‌محور بودن و برابری مقداری مناسب است.

اولین تمرین تو: یک InMemoryOrderRepository بساز و ثبت موفق و مبلغ نامعتبر را با دو تست مستقل بررسی کن.

توضیح ساده و قدم‌به‌قدم

از یک مثال کوچک شروع کن

interface را کوچک و بر اساس نیاز مصرف‌کننده بساز. OrderService فقط به قراردادی برای SaveAsync نیاز دارد. پیاده‌سازی واقعی دیتابیس و fake تست هر دو می‌توانند این قرارداد را اجرا کنند. این جداسازی اصل وابستگی را قابل لمس می‌کند.

1

۱. قرارداد را از نیاز استخراج کن

IOrderRepository فقط عملیات لازم سرویس را دارد.

2

۲. وابستگی را تزریق کن

سازنده repository را دریافت و نگه می‌دارد.

3

۳. منطق را تست کن

با fake repository بدون دیتابیس واقعی رفتار را بسنج.

نکته مهم

interface را برای هر class به‌صورت مکانیکی نساز؛ آن را در مرز تغییر واقعی یا آزمون‌پذیری معرفی کن.

مفهوم‌های اصلی

سه قطعه‌ای که باید بفهمی

Record

برای داده‌محور بودن و برابری مقداری مناسب است.

Interface

قرارداد رفتار را بدون وابستگی به پیاده‌سازی تعریف می‌کند.

Dependency injection

وابستگی آماده را از بیرون دریافت می‌کند و آزمون را ساده می‌سازد.

سناریوی واقعی

ثبت سفارش بدون وابستگی مستقیم به دیتابیس

سرویس سفارش باید بتواند امروز در حافظه و فردا در دیتابیس ذخیره کند؛ قانون ثبت نباید با تغییر محل ذخیره بازنویسی شود.

ورودی روشنیک تغییر کوچکنتیجه قابل سنجش
بازی ساختن کد

قطعه‌ها را به ترتیب درست بچین

روی هر قطعه بزن تا وارد پاسخ شود؛ برای برگرداندن دوباره روی آن بزن. با دکمه‌های جابه‌جایی هم می‌توانی بدون کشیدن و رهاکردن ترتیب را اصلاح کنی.

مرحله ۲ از ۳ · مرتب‌کردن کد
بانک قطعه‌هاقطعه مناسب را انتخاب کن
ترتیب پاسخ تواز بالا به پایین اجرا می‌شود

    هنوز پاسخی بررسی نشده است.

    کارگاه تعاملی

    بررسی ساختار تمرین

    این صفحه کامپایلر کامل C# نیست؛ ساختار تمرین را صادقانه بررسی می‌کند و خروجی مورد انتظار را نشان می‌دهد. برای اجرای کامل به محیط رسمی همان زبان نیاز است.

    OrderService.cs
    خروجیآماده
    یک بخش را تغییر بده و دکمه بررسی را بزن.
    بعد از هر تغییر، نتیجه را دوباره بررسی کن.
    تمرین هدایت‌شده

    یک InMemoryOrderRepository بساز و ثبت موفق و مبلغ نامعتبر را با دو تست مستقل بررسی کن.

    دام‌های رایج

    این سه اشتباه را انجام نده

    1

    service locator و وابستگی پنهان

    2

    interface بسیار بزرگ

    3

    قرار دادن قانون کسب‌وکار در repository

    سنجش چندمرحله‌ای

    با 5 سؤال مطمئن شو که مفهوم را گرفته‌ای

    سؤال 1 از 5

    تزریق سازنده چه مزیتی دارد؟

    سؤال 2 از 5

    record برای چه چیزی مناسب است؟

    سؤال 3 از 5

    قانون مبلغ مثبت کجا قرار گرفته؟

    سؤال 4 از 5

    کدام روش نشان می‌دهد این درس را واقعاً فهمیده‌ای؟

    سؤال 5 از 5

    کدام رفتار احتمال خطا را در همین موضوع بیشتر می‌کند؟

    پایان درس 5

    فهمیدی، تغییر دادی، نتیجه را توضیح دادی؟

    فقط در این صورت درس را کامل کن و سراغ مرحله بعد برو.