Треки
/
C#
C#
/
Вправи
/
Червоні проти синіх: у стилі Дарвіна
Червоні проти синіх: у стилі Дарвіна

Червоні проти синіх: у стилі Дарвіна

Навчальна вправа

Вступ

Простори імен

Простори імен - це спосіб згрупувати пов'язаний код і уникнути конфліктів імен; вони трапляються майже в кожній кодовій базі, крім найтривіальніших.

Синтаксис такий:

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, вкладені в зовнішній статичний клас <Color>RemoteControlCarTeam. Єдина мета зовнішнього класу - дозволити типам з однаковими назвами співіснувати в програмі. Це краще виражається за допомогою namespace. У наступній вправі ми побачимо, що для цих цілей namespace має переваги над static class.

2. Спростіть систему найменування

Хоча керівництво наполягає, що у визначеннях команди мають називатися RedRemoteControlCarTeam і BlueRemoteControlCarTeam, ці назви досить громіздкі, коли ми посилаємося на команди. Знайдіть спосіб використовувати коротші ідентифікатори Red і Blue, будуючи машини.

Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
C# Exercism

Час розпочати Червоні проти синіх: у стилі Дарвіна?

Зареєструйтеся на Exercism, щоб вивчати й опановувати C#, а також 62 концепції178 вправ та справжнє наставництво від людей, і все це безкоштовно.