學習軌道
/
C#
C#
/
練習
/
遙控清理
遙控清理

遙控清理

學習練習

簡介

巢狀型別

C# 型別可以定義在類別或結構的範圍內。外層型別提供了一種類似命名空間的作用。要存取內部型別時,必須透過外層型別並使用點語法。

class Outer
{
    public interface IInner {}
    public enum EInner {}
    public class CInner {}
    public struct SInner {}
}

var outer = new Outer();
var inner = new Outer.CInner();

你可以為內部型別設定存取層級。

外層型別的私有成員對內部型別的成員是可見的,但反之則不然。

說明

某些「其他」開發者一直在開發遙控車專案 remote-control-competition。你被找來清理這些程式碼。

1. 分離車子本身與遙測系統的關注點

重構RemoteControlCar類別,把遙測方法和屬性拆分出來,改由Telemetry屬性存取。

var car = new RemoteControlCar();
car.Telemetry.Calibrate();
car.Telemetry.SelfTest();
car.Telemetry.ShowSponsor("Walker Industries Inc.");
car.CurrentSponsor
// => "Walker Industries Inc."
car.Telemetry.SetSpeed(100, "cps");
car.GetSpeed()
// => "100 centimeters per second"

2. 避免其他程式碼對 Telemetry 型別產生過多的相依性

確保Telemetry實例無法在車子的作用域之外建立。

3. 避免其他程式碼相依於 Speed 結構

確保Speed結構無法在RemoteControlCar類別的作用域之外使用。

4. 避免其他程式碼相依於 SpeedUnits 列舉

確保SpeedUnits列舉無法在RemoteControlCar類別的作用域之外使用。

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

準備好開始 遙控清理 了嗎?

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