📖 구조 노트 목차 Chapter 4 읽는 중

4. 이름을 붙인다는 것

구조 노트 Chapter 4 2026. 07. 11.

class User라는 정의를 마주하면 프로그래머는 별다른 고민 없이 그 이름을 받아들인다. 그 이름 아래에는 서로 다른 이메일, 다른 가입일, 다른 로그인 상태를 가진 무수한 객체들이 묶여 있다. 코드를 작성하는 사람은 개별 사용자의 구체적인 데이터를 매번 나열하는 대신, User라는 이름 하나로 그 전체 묶음을 가리키고 다룬다. 이름은 묶음 내부의 차이를 가려 주는 동시에, 그 묶음을 다른 코드에서도 손쉽게 참조할 수 있게 만드는 손잡이 역할을 한다.

사실 참새도 마찬가지다. 동네 골목 전깃줄에 참새 몇 마리가 앉아 있다. 가까이서 보면 깃털의 색조도 다르고 몸집도 미묘하게 차이가 나지만, 우리는 그 무리를 향해 “참새”라는 단어 하나를 쓴다. 생물학자가 여기에 학명 Passer montanus를 하나 더 붙여도 사정은 같다. 서로 다른 개체 수십 마리가 하나의 이름 아래로 들어간다. class User와 참새 사이에는 코드와 자연이라는 거리가 있지만, 둘 다 하는 일은 똑같다. 2장에서 나뉜 묶음 하나하나에 손잡이를 다는 일이다.

다만 이름은 단순한 라벨에 그치지 않는다. 이름은 일종의 약속이기도 하다. User라는 이름을 마주하면 로그인, 인증, 권한 같은 관련 동작을 자연스럽게 기대하게 된다. 만약 UserManager라는 이름을 가진 클래스가 실제로는 로그 파일을 삭제하는 역할까지 떠맡고 있다면, 그 이름은 사용자에게 거짓말을 하고 있는 셈이다. 좋은 이름과 나쁜 이름을 가르는 기준은 결국 그 이름이 내부에 무엇을 숨기고 있으며 바깥으로 무엇을 약속하고 있는지가 서로 어긋나지 않는가에 달려 있다.

이름 덕분에 우리는 대상을 쉽게 다룰 수 있게 되었다. 하지만 이름만으로는 아무 일도 일어나지 않는다. User라는 이름이 의미를 갖는 것은 로그인하고, 주문하고, 권한을 확인하는 다른 대상들과 연결될 때다. 참새도 마찬가지다. 참새라는 이름보다 중요한 것은 먹이를 먹고, 날고, 둥지를 짓는 관계들이다. 다음 화에서는 대상보다 관계가 앞서는 순간을 살펴본다.