더북(TheBook)

12.7 활용 시 고려 사항

이번 절에서는 이 장에서 설명한 기능들을 어떻게 하면 잘 사용할 수 있는지 알아본다. 두 가지 기능은 향후에 좀 더 발전할 가능성이 있으며, 분해 패턴과 결합될 수도 있다. 패턴을 사용하는 switch 문을 표현식 본문 메서드로 작성하는 등의 기타 관련 기능들은 이 기능이 사용되는 위치에 영향을 줄 수 있다. C# 8에 포함된 기능들은 15장에서 좀 더 다룰 것이다.

패턴 매칭은 구현 방식에 대한 부분이므로 향후에 너무 과도하게 사용했다고 판단되더라도 크게 걱정할 필요가 없다. 패턴 매칭을 사용하면 가독성이 높아질 것으로 기대했으나, 그렇지 않았다면 이전 스타일로 코드를 되돌릴 수 있다. 분해 기능도 어느 정도는 이와 유사하다. 하지만 Deconstruct 메서드를 추가한 경우, 이를 제거하면 브레이킹 체인지(breaking change)가 되어 버린다.

또한, 대부분의 타입에 대해 자연스럽게 동작하는 IComparable<T>를 구현하기 어려운 것처럼 무리 없이 분해를 수행하는 것도 어려운 일이다. 따라서 타입을 구성하고 있는 요소의 순서가 명확하여 모호하지 않은 경우에만 Deconstruct 메서드를 구현할 것을 제안한다. 좌표, 계층적 특성이 있다고 생각되는 날짜/시간, 그리고 통상적으로 그 순서가 정해져 있는 것으로 생각되는 RGB와 선택적 알파 값 등이 적합한 예가 될 수 있다. 그런데 대부분의 비즈니스 관련 엔터티는 이러한 범주에 포함되지 않는다. 예를 들어 온라인 쇼핑 바구니에 추가된 물건들은 다양한 특성을 가지고 있지만, 명확하게 선후 관계를 규정하기는 어렵다.

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