Friend exception

friend는 캡슐화 경계를 제한적으로 여는 장치다

private 접근이 필요한 이유가 명확하고 대체 설계보다 의도가 선명할 때만 friend를 제한적으로 사용합니다.

need

필요성

외부 함수가 내부 표현을 알아야만 더 자연스러운 API가 되는지 확인합니다.

범위

범위 제한

함수 하나인지 클래스 전체인지 최소 권한 단위로 공개합니다.

no-chain

전이 없음

friend 관계는 상속되거나 다른 함수로 퍼지지 않는다는 점을 기억합니다.

검토

대체안

public 함수, getter, 비friend 대안을 먼저 봅니다.

friend 적용 사례

operator<<처럼 왼쪽 피연산자가 외부 타입이고 내부 출력 형식이 필요한 경우입니다.

위험 사례

테스트 편의나 임시 디버깅 때문에 private 상태를 넓게 열어 두는 경우입니다.

friend를 쓸 때의 기준은 더 많이 보이게 하는 것이 아니라 필요한 한 지점만 정확히 보이게 하는 것입니다.