트랙
/
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();

안쪽 타입에도 접근 수준을 설정할 수 있어요.

바깥쪽 타입의 private 멤버는 안쪽 타입의 멤버에게도 접근할 수 있지만, 그 반대는 안 돼요.

지침

몇몇 "다른" 개발자들이 원격 조종 자동차 프로젝트 remote-control-competition를 진행해 왔어요. 코드를 정리하러 불려 왔어요.

1. 자동차 자체와 텔레메트리 시스템의 관심사를 분리해요

텔레메트리 메서드와 속성을 분리해 Telemetry 속성으로 접근하도록 RemoteControlCar 클래스를 리팩터링해요.

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 구조체에 의존하지 않도록 해요

RemoteControlCar 클래스의 스코프 밖에서는 Speed 구조체를 사용할 수 없도록 해요.

4. 다른 코드가 SpeedUnits 열거형에 의존하지 않도록 해요

RemoteControlCar 클래스의 스코프 밖에서는 SpeedUnits 열거형을 사용할 수 없도록 해요.

GitHub에서 편집 링크가 새 창이나 탭에서 열려요
C# Exercism

원격 조종 정리 문제를 시작해 볼 준비가 됐나요?

Exercism에 가입하고 C# 트랙을 개념 62개연습 문제 178개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.