學習軌道
/
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 本身,都巢狀在一個外層的 static class <Color>RemoteControlCarTeam裡。這個外層類別唯一的用途,就是讓同名的型別能在程式中並存。用 namespace 來表達這件事會更好。下一個練習你會看到,就這些用途而言,namespace 比 static class 更有優勢。

2. 簡化命名方式

雖然管理層堅持,團隊在定義中就該叫 RedRemoteControlCarTeam 和 BlueRemoteControlCarTeam,但引用團隊時這些名字實在有點笨重。請找出方法,在打造車子時改用較短的識別字 Red 和 Blue。

透過 GitHub 編輯 連結會在新視窗或分頁中開啟
C# Exercism

準備好開始 紅隊對藍隊:達爾文風格 了嗎?

註冊 Exercism,透過 62 個概念178 個練習 和真人引導來學習並精通 C#,全部免費。