parameter choice

매개변수 형태는 함수의 의도를 드러내는 계약이다

복사할지, 원본을 바꿀지, 대상이 없을 수도 있는지에 따라 값, 참조, 포인터, const 참조 중 선택이 달라집니다.

전달 방식 비교

api signal
T value

복사해도 좋음

작은 값이거나 함수 안에서 독립 사본이 필요할 때 씁니다.

const T&

읽기 전용

큰 객체를 복사하지 않고 읽기만 할 때 기본 선택입니다.

T&

원본 수정

호출자의 객체가 반드시 존재하고 수정되어야 함을 뜻합니다.

T*

없음 가능

nullptr이 의미 있는 선택지일 때 포인터가 의도를 드러냅니다.

읽기만 한다

큰 객체는 const 참조, 작은 값은 값 전달이 단순합니다.

반드시 바꾼다

T&는 null 체크 없이 수정 의도를 명확히 보여줍니다.

대상이 선택적이다

T*는 없음을 표현하므로 호출 전 null 기준을 정합니다.

copy read modify optional

계약 읽기 참조자는 “대상이 반드시 있다”는 신호이고, 포인터는 “주소 자체를 다룬다” 는 신호입니다. 선택 기준을 코드 형태에 담으면 호출부가 더 읽기 쉬워집니다.