friend는 “왜 열어야 하는가”가 설명될 때만 쓴다
판단은 공개 API 가능성, 좌측 피연산자, 권한 범위, 문서화 여부 순서로 좁혀 갑니다.
먼저 거절공개 함수로 의미를 표현할 수 있다getter 남발이 아니라 이름 있는 관찰자와 멤버 함수가 우선입니다.
검토 시작좌측 피연산자가 내 타입이 아니다
std::ostream << obj처럼 멤버 함수 후보가 어색한지 봅니다.범위 축소함수 하나로 충분한가충분하면
friend function, 아니면 마지막에 friend class를 검토합니다.문서화권한 이유가 코드 옆에서 읽힌다왜 private 접근이 필요한지 주변 코드만 보고 납득되어야 합니다.
전이 없음friend의 friend까지 문이 열리지 않습니다.
상속 없음기반/파생 클래스 사이로 권한이 자동 이동하지 않습니다.
양방향 아님한쪽 선언이 반대쪽 private 접근을 열지 않습니다.
최종 기준: public API로 더 선명하게 말할 수 있으면 friend가 아니고, 예외 접근이 꼭 필요하면 가장 좁은 이름 하나만 엽니다.