네이밍(Naming)은 왜 중요한가

Eddy·2022년 1월 7일
7

네이밍이... 뭐가 어려워?

흔히 개발자가 하는 일 중 가장 어려운 게 네이밍(Naming)이라고 한다.

처음에 난 그냥 농담인 줄 알았다.

이과인 개발자들이 문과적 창의력이 부족하다는 농담인가보군. 하하.

컴퓨터 공학에서 가장 어려운 주제 2가지가 캐시 무효화랑 이름 짓기라는 유명한 말도 있다.

There are only two hard things in Computer Science: cache invalidation and naming things
- Philip Karlton

아니 '캐시 무효화'는 뭔지도 모르겠다. 확실히 어려운 거 맞는 거 같다.

근데 갑자기... 네이밍? 네이밍이 뭐가 어렵지?

솔직히 프로그래밍에 얼마나 어려운 언어, 기술, 공학, 프레임워크들이 많은데.

아니면 별 것 아닌 일인데 생각보다 어려워서 웃기게 표현한 건가?

물론 '이름을 붙이는 건' 쉽다.

사실 이름은 아무거나 붙여도 된다.
컴퓨터는 무슨 이름을 붙이든 문제없이 실행해준다.

하지만 좋은 이름을 붙이는 건 어렵다.

개발자들이 네이밍이 어렵다고 할 때는 진짜 진지하게 어렵다는 뜻이다.
네이밍은 내가 생각한 것보다 훨씬 중요하고, 더 심오한 것과 연결이 돼있었다.

좋은 네이밍이 중요한 이유

코딩을 하다보면 문제에 몰입하게 된다. 어떻게든 이 코드가 작동하도록 만들어야 하니까. 어떻게든 여기에 주어진 배열을 내가 원하는 데이터로 바꿔놓아야 하니까.

그래서 중요한 점을 잊어버리곤 한다.

프로그래밍은 문제 해결이 전부가 아니다.
프로그래밍은 다른 사람과의 커뮤니케이션이고 협업이다.

당연히 코드는 컴퓨터가 읽고 실행할 수 있어야 한다. 그건 기본이다.

하지만 우리가 쓴 코드를 읽는 건 컴퓨터만이 아니다. 내가 만들어낸 코드가 실제 어플리케이션에 포함된다면, 앞으로 수많은 사람의 손을 거치게 될 것이다. 다른 프로그래머, 그리고 미래의 내가 이 코드를 읽는다는 뜻이다.

코드는 그 다른 '사람'에게 이 프로그램이 무엇을 하는지 명료하게 전달할 수 있어야 한다.

그래야 다른 사람이 쉽게 이해하고, 수정할 수 있다. 쉽게 이해하고 수정할 수 있으면 장기적으로 소프트웨어의 품질이 좋아지고 이슈가 줄어든다.

읽기 좋은 코드가 좋은 코드다.
좋은 네이밍은 바로 이 가독성과 연관이 있다.

네이밍을 잘해야 읽기 좋은 코드가 된다.

좋은 네이밍은 어렵다.

그런데 네이밍을 잘한다는 건 생각보다 쉬운 일이 아니다.

"왜? 그냥 이 정도면 충분히 알아들을 만한 이름 아닌가?"

우리는 지금 코딩을 하면서 이 문제의 맥락을 잘 알고 있다.
그렇기 때문에 우리한테는 변수 이름을 어떻게 짓든 꽤 명료하게 느껴진다.

val , item... 이 정도면 되지 않아?
아, 이거 지금 둘을 더한 값을 말하는 거라고 딱 보이는데?

하지만 과연 다른 사람도 그럴까? 미래의 나도 그럴까?

컨텍스트가 다르면, 다르게 보인다.

모든 사람은 각자 다른 컨텍스트와 시점에 이 코드를 읽는다. 내가 가진 지식, 정보, 상황 같은 컨텍스트가 달라지면 같은 이름이라도 전혀 다른 뜻으로 해석한다.

예를 들어, User라고 이름을 지었다고 해보자.

사실 개발자들한테 User그 이상 명확할 수가 없는 말처럼 느껴진다. 맨날 보는 말이니까.

하지만 컨텍스트에 따라서, 항상 말이 되는 건 아니다.
다른 사람들은 다르게 이해할 수도 있다.

사용자가 회사인가? 고객인가? 여러 타입의 사용자 중 어떤 걸 사용자라고 부르지?

User 라는 단순한 단어로도 혼란은 얼마든지 일어날 수 있다는 것이다.

심지어 아주 높은 확률로 이 코드를 다시 볼 나 또한 마찬가지다.
미래의 나는 이 코드를 짤 때 내 머릿속의 컨텍스트를 전혀 기억하지 못한다.
이 코드를 처음 보는 사람이나 별로 다를 게 없을 거다.

그런 독자를 위해서 우리는 네이밍에 대해서 깊게 고민을 해야 한다.
우리가 생각하는 것보다 더 많이.

코드는 쓰는 시간보다 읽는 시간이 더 길다.

현업 개발자들은 코드를 쓰는 시간보다 코드를 읽는 시간이 훨씬 길다는 걸 안다. 그리고 자기가 안 좋은 네이밍으로 가득한 코드를 이해하려면 얼마나 힘든지도, 읽는 시간이 얼마나 길어질 수 있는지도 안다.

그러니 좋은 이름으로 고민하는 시간은 충분히 값어치가 있다.

다시 이 코드를 읽어볼 많은 사람들이 두번 세번 같은 줄을 읽어볼 필요가 없도록,
우리 자신이 코드를 두번 세번 다시 읽어볼 필요가 있다.

프로 개발자들의 특징

12명의 프로 개발자와 18명의 대학생을 대상으로 한 연구가 있다.
연구에 따르면 학생들과 프로 개발자 모두 네이밍이 중요하다는 데 동의했다.

하지만 프로 개발자들과 학생들은 큰 차이가 있었다.
프로 개발자들이 실제로 변수 이름을 짓는데 훨씬 더 많은 주의를 기울이고 노력을 쏟는다는 점이었다.

'네이밍이 중요하다'고 했을 때 아니라고 할 사람은 거의 없다.
하지만 진짜로 네이밍에 노력을 쏟는 건 또 다른 얘기다.

나와 컨텍스트가 완전히 다른 사람에게 명확하게 내가 풀고 있는 문제를 전달한다는 건,
원래 아주 어려운 일이다. 커뮤니케이션은 원래 어려운 거다.

네이밍은 분명 어려운 일이지만, 그게 변명이 될 수는 없다.

그 이름이 최선인가? 조금만 더 생각해보자.

profile
개발 지식을 쉽고 재미있게 설명해보자. ▶️ www.youtube.com/@simple-eddy

0개의 댓글