Post

코드 가독성에 대한 몇가지 이야기

코드 가독성 얘기하다 보면
이런 이야기들, 한 번쯤은 다 들어보셨을 거예요.

변수 이름은 이렇게 써야 된다,
함수는 동사로 시작해야 된다,
camelCase가 맞다, snake_case가 맞다…
뭐 이런 이야기들이요.

보통은 이런 게
“좋은 코드 작성법”처럼 소개되죠.

근데 저는 이걸
조금 다르게 보고 있어요.

이게 틀렸다는 얘기를 하고 싶은 건 아닌데요,
정확히 말하면
전제가 하나 빠져 있다는 느낌이에요.

그 전제가 뭐냐면,
이 작성법들이
영어를 기준으로 만들어졌다는 점입니다.

보통 예로 드는 이름들 있잖아요.

1
2
3
getUserName()  
isValid  
shouldRender

이런 이름들은
코드를 문장처럼 읽기 쉽게 만들기 위한 거예요.

정확히 말하면,
영어 문장을 읽듯이
코드를 읽게 하려는 방식이죠.

영어는 문장을 읽을 때
앞부분에서 의미가 꽤 빨리 잡혀요.

그래서
isUserLoggedIn 같은 이름도
왼쪽에서 오른쪽으로 쭉 읽으면서
“아, 이게 무슨 뜻이구나” 하고 바로 이해가 됩니다.

근데 한국어는 좀 다르죠.

한국어는
끝까지 들어봐야 의미가 완성되는 언어잖아요.
“한국말은 끝까지 들어봐야 한다”
이런 말도 있고요.

그래서 한국어가 모국어인 우리는
이름을 한 번에 훑어 읽기보다는
코드의 구조라든지,
상태라든지,
맥락 단위로 파악하는 데 더 익숙해요.

예를 하나 들어볼게요.

1
if (isUserAuthorized && hasValidToken)

이 코드는
영어권 사고방식으로 보면
질문을 나열하듯이
되게 자연스럽게 읽혀요.

“권한이 있는가?”
“유효한 토큰이 있는가?”

이런 느낌이죠.

근데 한국인 입장에서는
이 코드가 꼭 그렇게 편하게 느껴지진 않을 수 있어요.

오히려 이런 쪽이 더 빨리 들어올 때도 많죠.

1
if (userState === AUTHORIZED && tokenState === VALID)

이건
문장을 읽는다기보다는,
상태를 확인하는 느낌이에요.

“아, 지금 유저 상태는 이거고,
토큰 상태는 이거구나.”

이런 식으로요.

이게 뭐가 더 낫다,
뭐가 틀렸다
이런 이야기는 아닙니다.

그냥
읽는 방식이 다르다는 거예요.

그래서 영어권 코드 리뷰를 보면요,
사실상 이게
코드를 문장처럼 다듬는 작업에 가까워요.

이름이 자연스럽게 읽히는지,
질문처럼 들리는지,
문장이 어색하지 않은지
이런 걸 많이 보죠.

반대로 한국어 화자 입장에서는
그런 코드가
논리적으로는 깔끔한데
읽다 보면 은근히 피곤한 코드가 되기도 해요.

물론 상황에 따라 다릅니다.

해외 오픈소스 프로젝트에 참여한다든지,
회사에서 특정 컨벤션을 쓰기로 정해져 있다면
그 문화에 맞춰서 코딩하는 게 맞죠.

그건 협업의 문제니까요.

다만,
개인 프로젝트라든지
국내 중심의 소규모 프로젝트라면,

영어권에서 정해놓은 작성법을
무조건 정답처럼 따라야 할 필요는 없다는 겁니다.

그럼 여기서
자연스럽게 이런 질문이 하나 생겨요.

“그럼 왜
아예 한국어를 기준으로 한,
한국어 프로그래밍 언어는 없는 걸까?”

이건 단순히
기술의 문제가 아니라,
구조와 생태계의 문제에 가깝습니다.

This post is licensed under CC BY 4.0 by the author.