11.6.1 비공개 API와 쉽게 변경되는 코드에서 사용
C#을 사용하는 커뮤니티에 튜플에 대해 더 많은 경험과 어려운 과제를 수행하면서 얻은 교훈이나 모범 사례가 쌓일 때까지 공개 API의 일부로 튜플을 사용하거나 다른 어셈블리에서 상속을 통해 접근할 수 있는 protected 멤버로 튜플을 사용하는 것은 가능한 한 피하는 것이 좋겠다. 운이 좋아서 모든 코드를 통제할 수 있고 세세한 부분까지도 수정할 수 있는 상황이라면 더욱 조심해야 한다. 나중에 좀 더 완벽히 캡슐화할 수는 없었을까 하고 후회하고 싶지 않다면 코딩하기 쉽다는 이유로 공개 메서드의 반환 타입으로 튜플을 반환하도록 내버려 두는 것은 좋지 않다. 명명된 타입을 작성하려면 더 많은 설계 작업과 구현 작업이 필요하지만, 결과적으로 호출 측에서는 좀 더 편리하게 사용할 수 있다. 튜플은 호출 측보다는 구현 측에 더 편리한 기능이다.
내가 지금까지 선호하는 방식은 좀 더 나아가서 타입 내의 세부적인 부분을 구현할 때에 한해서만 튜플을 사용하는 것이다. private 메서드가 튜플을 반환하는 정도는 괜찮은 것 같다. 하지만 제품 코드에서라면 내부 메서드에도 튜플을 사용하고 싶지 않다. 사용 범위를 제한하면 할수록 마음을 바꿔도 부담이 없고 이런저런 복잡한 생각을 피할 수 있다.