더북(TheBook)

C# 7.0이 처음 출시되었을 때 개인적으로 약간 이상해 보이는 기능이 몇 가지 있었는데, 그중 대표적인 기능이 바로 참조 지역 변수(ref local variable)와 참조 반환(ref return)이었다. 이 기능은 흔히 보기 어려운 매우 큰 값 타입을 대상으로 하는 기능이기 때문에 개발자들이 이 기능을 얼마나 필요로 할지 다소 회의적이었으며, 준실시간으로 동작해야 하는 서비스에서나 유용할 것으로 생각했다.

C# 7.2에는 참조와 관련되어 있는 in 매개변수, 읽기 전용 참조 지역 변수, 읽기 전용 참조 반환, 유사 참조(ref-like) 구조체 기능도 추가되었다. 이러한 기능들은 C# 7.0에 추가된 기능을 보완하기 위한 것이긴 하지만, 이러한 기능이 필요한 아주 소수의 개발자들을 위해 언어를 너무 복잡하게 만든 것처럼 보였다.

비록 다수의 개발자가 자신이 참여하는 프로젝트에서 참조를 이용하는 코드를 직접 접할 일은 많지 않더라도, 프레임워크 내부에서 이런 기능들을 잘 활용할 것이기 때문에 기존에 존재하던 기능에도 실익이 있을 것으로 확신한다. 이 책을 쓰는 이 순간에도 이런 기능들이 얼마나 혁명적인 역할을 할지 확신하기는 어렵지만, 분명 중요한 역할을 할 것으로 기대된다.

성능을 개선하려다 보면 종종 가독성을 해치게 된다. 이 장에서 설명할 기능들 중 일부도 가독성에 좋지 않은 영향을 미칠 수 있다. 이 장에서 설명할 기능들은 비용보다 성능이 훨씬 더 중요하다고 판단되는 위치에 제한적으로 사용하는 것이 좋다. 하지만 프레임워크에서 이런 기능을 활용하는 것은 완전히 다른 문제다. 이런 기능들을 내부적으로 활용하면, 사용자가 개발하는 코드의 가독성을 해치지 않으면서도 객체 할당을 줄이고 메모리 사용과 가비지 수집기의 동작을 최소화할 수 있기 때문이다.

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