“그냥 다 weak로 쓰세요” 같은 리뷰 코멘트에는 작성자가 딱히 대답할 게 없어요.
클래스 인스턴스가 콜백을 저장하고, 그 콜백이 같은 인스턴스를 강하게 캡처하는 경우를 놓고 보죠. 작성자가 실제로 붙잡고 이야기할 수 있는 코멘트는 이런 거예요. “이 캡처를 weak로 바꾸고, 인스턴스가 이미 사라졌으면 콜백이 아무것도 안 하게 해도 될까요?” 그리고 “원래 소유자가 사라진 뒤에도 이 작업이 끝까지 돌아야 한다면, 끝날 때까지 어떤 객체가 붙잡고 있어야 할까요?”
첫 번째는 소유하지 않는 관계를 제안하면서 상대가 없을 때 어떻게 되는지 말해요. 두 번째는 계속 소유하는 책임이 어디에 있어야 하는지 물어요. 둘은 서로 다른 설계로 이어지고, 실제 요구 사항이 둘 중 하나를 골라 줘요. 강한 순환을 끊는 건 쉬운 부분이에요. 각자 얼마나 살아 있어야 하는지가 진짜 질문이에요.
그래도 반대할 수 있고, 변경을 아예 거절해도 돼요. Swift 행동 강령도 건설적인 비판을 권하고, 정확한 코멘트일수록 작성자가 근거를 들어 방어하거나 고치기 쉬워요. 관계에 이름을 붙이면 반대 의견도 대답할 수 있는 말이 돼요.