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

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

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

مقدمه

ماژول

«ماژول» روشی برای گروه‌بندی کدهای مرتبط است تا از تداخل اسم‌ها جلوگیری شود و به‌طور کلی در همه‌ی پایگاه‌های کد به‌جز پیش‌پاافتاده‌ترین آن‌ها وجود دارد.

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

mod my_module {
    pub struct MyStruct {}

    pub struct OtherClass {}
}

بیرون از دامنه‌ی ماژول، به انواعی که داخل ماژول قرار دارند با قرار دادن :: به‌عنوان پیشوند قبل از اسم نوع ارجاع داده می‌شود. در عوض و معمولاً رایج‌تر، می‌توانید یک دستور use را در بالای فایل (یا داخل یک ماژول) قرار دهید و سپس از انواع بدون پیشوند استفاده کنید. در همان ماژول نیازی نیست اسم نوع را با مسیر کامل بنویسید.

mod my_module {
    #[derive(Drop)]
    pub struct MyStruct {}

    pub struct Foo {}

    #[generate_trait]
    pub impl FooImpl of FooTrait {
        fn bar() {
            let baz = MyStruct {};
        }
    }
}

#[derive(Drop)]
pub struct Qux {}

#[generate_trait]
impl QuxImpl of QuxTrait {
    fn box() {
        let nux = my_module::MyStruct {};
    }
}

mod other_module {
    use super::my_module::*;

    #[derive(Drop)]
    pub struct Tix {}

    #[generate_trait]
    pub impl TixImpl of TixTrait {
        fn jeg() {
            let lor = MyStruct {};
        }
    }
}

می‌توانید برای یک ماژول یا یک نوع با نحوه‌ی نگارش use core::array::ArrayTrait as Arr; یک «نام مستعار» تعریف کنید و سپس از آن نام مستعار هر جایی که می‌توان از ماژول یا نوع استفاده کرد، استفاده کنید.

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

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

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

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

در حال حاضر نوع‌های مهمی مثل Motor و Telemetry و حتی خودِ RemoteControlCar با رنگ تیم مربوطه پیشوند می‌گیرند: <Color>RemoteControlCarTeam. تنها هدف این پیشوند این است که نوع‌هایی با اسم یکسان بتوانند در برنامه در کنار هم وجود داشته باشند. استفاده از ماژول این موضوع را بهتر بیان می‌کند. خواهید دید که برای این منظور، ماژول مزایایی نسبت به پیشوند کردن نوع‌ها دارد.

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

مدیریت الزام کرده است که اسم تیم‌ها در تعریف‌ها «Red Remote Control Car Team» و «Blue Remote Control Car Team» باشد و این اسم‌های طولانی حتی در خود Code نیز به کار روند. اما ارجاع دادن به تیم‌ها با این اسم‌ها تا حدی دست‌وپاگیر است.

راهی پیدا کنید که در همان ماژولی که ماشین‌ها را در آن خواهید ساخت، از شناسه‌های کوتاه‌تر «Red» و «Blue» استفاده کنید.

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

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

در Exercism ثبت‌نام کنید تا Cairo را همراه با 25 مفهوم68 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.