مسیرها
/
C#
C#
/
تمرین‌ها
/
قرمز در برابر آبی: به سبک داروین
قرمز در برابر آبی: به سبک داروین

قرمز در برابر آبی: به سبک داروین

تمرین یادگیری

مقدمه

فضاینام

فضاینام روشی است برای گروه‌بندی code مرتبط و پرهیز از تداخل اسم‌ها و معمولاً در همه‌ی code baseها وجود دارد، جز ساده‌ترین‌شان.

نحوه‌ی نگارش آن به این صورت است:

namespace MyNameSpace
{
    public class MyClass {}

    public class OtherClass {}
}

به نوع‌هایی که درون یک فضاینام قرار دارند، از بیرون از محدوده‌ی آن فضاینام با افزودن پیشوندِ اسم نوع به کمک نحوه‌ی نگارش نقطه‌دار ارجاع داده می‌شود. در روشی دیگر، و معمول‌تر، می‌توانید یک دستور using را در ابتدای فایل (یا درون یک فضاینام) قرار دهید تا نوع بدون پیشوند به کار برود. درون یک فضاینام یکسان، نیازی به پیشوندگذاری روی اسم نوع‌ها نیست.

namespace MySpace
{
    public class MyClass {}

    public class Foo
    {
        public void Bar()
        {
            var baz = new MyClass();
        }
    }
}

public class Qux
{
    public void Box()
    {
        var nux = new MySpace.MyClass();
    }
}

namespace OtherSpace
{
    using MySpace;

    public class Tix
    {
        public void Jeg()
        {
            var lor = new MyClass();
        }
    }
}

می‌توانید با نحوه‌ی نگارش using MyAlias = MySpace; برای یک فضاینام نام مستعار تعریف کنید و سپس از آن نام مستعار هر جایی که خود آن فضاینام می‌توانست به کار برود استفاده کنید.

دستورالعمل‌ها

مدیریت شروع کرده است اصول داروینی را بر پروژه‌ی ماشین کنترلی از راه دور remote-control-competition اعمال کند. توسعه‌دهندگان به دو تیم Red و Blue تقسیم شده‌اند و وظیفه‌شان این است که طراحی را مستقل از یکدیگر بهتر کنند. لازم نیست خودشان را درگیر تصمیم‌های طراحی تیم دیگر کنند.

از شما خواسته شده است که نگاهی به کد بیندازید و ببینید برای اهداف تستی چطور می‌توانید این دو تلاش را به بهترین شکل با هم ترکیب کنید.

1. روش مناسب‌تری برای جداسازی کد دو تیم پیدا کنید

لطفاً از namespaces استفاده کنید تا منظور کد را بهتر بیان کنید.

در حال حاضر، نوع‌های مهمی مانند Motor و Telemetry، و حتی خود RemoteControlCar، درون یک کلاس static دربرگیرنده به اسم <Color>RemoteControlCarTeam تودرتو شده‌اند. تنها هدف کلاس دربرگیرنده این است که اجازه دهد نوع‌هایی با اسم یکسان در کنار هم در برنامه وجود داشته باشند. این موضوع را بهتر است با استفاده از یک namespace بیان کنیم. در تمرین بعدی خواهید دید که برای این منظورها، namespace مزیت‌هایی نسبت به static class دارد.

2. سیستم نام‌گذاری را ساده کنید

هرچند مدیریت بر این اصرار دارند که تیم‌ها در تعریف‌ها RedRemoteControlCarTeam و BlueRemoteControlCarTeam نامیده شوند، با این حال این اسم‌ها هنگام ارجاع به تیم‌ها نسبتاً دست‌وپاگیرند. راهی پیدا کنید تا هنگام ساختن ماشین‌ها از شناسه‌های کوتاه‌تر Red و Blue استفاده کنید.

ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
C# Exercism

آماده‌اید قرمز در برابر آبی: به سبک داروین را شروع کنید؟

در Exercism ثبت‌نام کنید تا C# را همراه با 62 مفهوم178 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.