더북(TheBook)

4
C# 7 그리고 그 이후

11장 튜플을 이용한 구성

12장 분해와 패턴 매칭

13장 참조 전달을 통한 효율 개선

14장 C# 7을 이용한 간결한 코드 작성

15장 C# 8 그리고 그 이후

 

C# 7은 C# 1이 출시된 이래 처음으로 마이너 버전이 개선된 형태로 출시되었다.0 총 네 가지 버전이 존재한다.

• 2017년 3월에 Visual Studio 2017 버전 15.0과 함께 출시된 C# 7.0

• 2017년 8월에 Visual Studio 2017 버전 15.3과 함께 출시된 C# 7.1

• 2017년 12월에 Visual Studio 2017 버전 15.5와 함께 출시된 C# 7.2

• 2018년 5월에 Visual Studio 2017 버전 15.7과 함께 출시된 C# 7.3

 

마이너 버전의 대부분은 완전히 새로운 기능이 추가되었다기보다는 앞서 출시된 C# 7.x 릴리스에 추가된 새로운 기능들을 확장한 모양새를 띠고 있다. 물론 C# 7.2에 새롭게 추가된 ref 관련 기능처럼 완전히 새로운 기능들도 있긴 하다. 이 내용은 13장에서 알아볼 것이다.

C# 6와 비교했을 때 C# 7의 기능은 상당히 복잡해져서 할 이야기가 많은 편이다. 튜플은 컴파일러가 생각하는 타입과 CLR이 사용하는 타입 간에 차이가 있으므로 매우 흥미롭다. 지역 메서드(local method)는 람다 표현식과 비교해 보면 상당히 매력적이다. 패턴 매칭(pattern matching)은 매우 쉽게 이해되지만, 이 기능의 장점을 십분 활용하려면 어느 정도 고민이 필요하다. ref 관련 기능은 단순해 보일지 몰라도 본질을 살펴보면 상당히 복잡하다(in 매개변수 등이 그렇다).

C# 6가 제공하는 기능은 대부분의 개발자가 매일 사용할 만큼 유용하지만, C# 7이 새롭게 제공하는 기능 중 일부는 전혀 그렇지 않을 수도 있다. 개인적으로 튜플 같은 타입은 거의 사용하지 않는데, 대상 플랫폼이 이 기능을 제공하지 않기 때문이다. ref 관련 기능도 그리 많이 사용하는 편은 아닌데, 이 기능이 딱히 유용한 상황을 아직 찾지 못했다. 그렇다고 해서 이런 기능이 나쁘다는 것은 아니다. 단지 적용 범위가 넓은 편이 아니라는 것이다. 그 외에 C# 7의 다른 기능들, 예를 들어 패턴 매칭, throw 표현식, 개선된 숫자 리터럴 등은 모든 개발자에게 유용한 기능이지만 코드에 미치는 영향은 비교적 적다.

사전에 이런 이야기를 하는 이유는 독자들의 기대치를 설정하기 위함이다. 항상 그렇듯 각각의 기능을 익힐 때는 지금 개발하고 있는 코드에 그 기능을 어떻게 적용할 수 있을지 생각해 보기 바란다. 당연한 이야기지만, 반드시 새로운 기능을 사용해 코드를 수정해야 하는 것은 아니다. 몇 줄 되지 않는 코드를 수정하여 새로운 기능 모두를 사용하도록 코드를 만들 수는 없는 노릇이다. 지금 당장 새로운 기능을 사용할 수 없더라도 상관없다. 어떤 기능을 사용할 수 있는지 잘 기억하고 있다가 적재적소에 활용할 수만 있으면 된다.

15장에서 다룰 내용은 C#의 미래에 대한 이야기다. 대부분의 기능은 C# 8 미리보기 빌드에서도 잘 동작했지만 마지막 빌드가 출시될 즈음에 그 내용이 사뭇 다르게 바뀔 수도 있다. 그리고 전혀 다루지 않은 내용이 포함될 수도 있다. 내가 그러하듯 흥미로운 기능들을 잘 설명한 문서를 찾아내는 즐거움을 느끼길 바라고, C# 팀이 작성한 블로그도 잘 살펴보기 바란다. 지금 당장 사용할 수 있는 기능과 미래에 출시될 훌륭한 기능을 고려했을 때, 지금처럼 C# 개발자가 되기에 좋은 시기가 또 있을까 싶다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.