안녕하세요. 인포그랩 프로덕트 팀에서 백엔드 엔지니어로 일하는 Andy입니다. 오늘은 제가 평소 코드를 작성할 때 중요하게 생각하는 주제인 네이밍(naming: 이름짓기)을 이야기해 보려고 합니다.
출처=픽사베이개발자는 일반적으로 클래스, 변수, 함수 등을 네이밍하는데요. 네이밍은 코드의 가독성, 유지보수성, 협업 효율성에 큰 영향을 미칩니다. 예를 들어, 변수나 함수 이름을 실제 의미와 일치하도록 짓고, 이름만 봐도 내용을 즉시 이해하도록 지으면 개발팀이 빠르고 정확하게 소통할 수 있고요. 이는 개발 생산성을 높여줍니다.
이에 많은 개발자가 항상 고민하면서 클래스, 변수, 함수 등을 네이밍하죠. 저도 코드 작성 과정에서 네이밍할 때, ‘이 이름이 정말 직관적인가?’라고 자주 생각합니다. 특히 ‘다른 팀원들이 이름을 보고도 코드 역할을 바로 알도록 네 이밍하는 방법이 늘 고민인데요. 이러한 이유로 평소 네이밍을 잘하는 방법을 조사하고 연구하죠. 이 글에서는 제가 학습한 내용을 토대로 “개발 생산성을 높이는 가독성 좋은 코드 네이밍 비법 5가지”를 소개하겠습니다.
네이밍 잘해야 하는 이유
개발자는 코드를 작성할 때 로직을 잘 짜야 하죠. 그러나 다른 팀원들이 코드를 직관적으로 정확히 이해하도록 네이밍을 잘하는 것도 중요합니다. 아래 예제와 함께 그 이유를 살펴보겠습니다.
function doStuff(data: any) {
const result = [];
for (const item of data) {
if (item.isActive) {
result.push(item);
}
}
return result;
}
위 예제에서 doStuff
라는 이름만 보면, 이 함수 역할을 바로 이해하기 어렵습니다. Stuff
라는 단어가 추상적이라 구체적인 의미가 바로 전달되지 않고요. 이에 함수 내부 로직까지 샅샅이 살펴보게 되죠. 함수 역할을 정확히 파악하는 데 시간이 걸립니다.
또 이 예제에서는 함수 입력 인자와 내부 변수가 data
, item
, result
라는 단어로 쓰였 는데요. 이 또한 의미를 즉시 인지하기에는 일반적이고 모호한 단어입니다. 누군가는 생각 회로를 여러 번 돌려야 내용을 이해할 수도 있습니다.
다른 팀원들이 위 예제를 보고 doStuff
함수를 빠르게 사용하고 수정할 수 있을까요? 함수 역할을 정확히 파악하지 못해 부작용이 생기지는 않을까요? 그렇다면 이 문제를 어떻게 예방해야 할까요? 저는 다음 5가지 네이밍 방법을 제안합니다.
- 클래스/변수/함수 대상과 행위 나타내기
- 명사와 동사 활용하기
- 시제와 동사 형태 구체화하기
- 필수 접두사/접미사만 사용하기
- 불명확한 약어 대신 명확한 본딧말 쓰기
비법 1. 클래스/변수/함수 대상과 행위 표현
이름에 ‘클래스/변수/함수 등의 대상과 행위’를 담으면 가독성이 좋아집니다. 이로써 대상의 책임 범위, 대상을 사용하는 코드 역할을 정확히 드러낼 수 있죠.
반면에 ‘클래스/변수/함수 등이 언제, 어디서, 어떻게 사용되는지’를 이름에 넣으면, ‘클래스/변수/함수 등의 역할’이 드러나지 않아 내용을 바로 이해하기 어렵습니다.
함수 이름과 변수 이름의 잘못된 예와 올바른 예를 살펴보겠습니다.
잘못된 예
-
handleButtonClickInProfileScreen
: 프로필 화면에서 버튼을 클릭할 때 호출되는 함수이름에 ‘함수가 어디서(프로필 화면), 언제(버튼 클릭 시) 사용되는지’만 나오는데요. 함수가 호출될 때 수행하는 역할을 알 수 없습니다.
-
isNavigatedFromHomeScreen
: 홈 화면에서 이동할 때 true가 되는 변숫값이 이름도 ‘변숫값이 어디서(홈 화면에서 이동) 사용되는지’만 나와 값의 의미를 정확히 파악하기 어렵습니다.
올바른 예
-
ProductListProvider
: 상품 리스트를 제공하는 클래스이름에 ‘상품을 대상으로 제공되는 클래스’라고 클래스의 대상과 역할을 분명히 표현했습니다.
-
showErrorModal
: 에러 모달 창을 보여주는 함수‘’에러’라는 대상에 모달을 보여주는 함수’라고 함수의 대상과 역할을 이름에 구체적으로 나타냈습니다.
비법 2. 명사와 동사 활용
명사/명사구, 동사를 이름에 사용해도 가독성 향상에 도움이 됩니다. 유형별 사용 사례는 다음과 같습니다.