가독성을 높이는 함수 이름을 짓는 법

제이제이·2022년 8월 23일
2
post-thumbnail

메서드 이름은 동사나 동사구가 적합하다.
추상적인 개념 하나에 단어 하나를 선택해 이를 고수한다. 예를 들어, 똑같은 메서드를 클래스마다 fetch, retrieve, get으로 제각각 부르면 혼란스럽다.
-클린 코드 (로버트 C.마틴)

함수 이름은 동사로 짓기

이전에는 함수 이름을 지을 때 내가 넣는 기능을 포괄하는 그럴듯한 단어라면 별다른 고민없이 그냥 사용했었다. 함수가 늘어날 수록 어떻게 하면 함수가 맡은 기능의 범위를 줄이고, 직관적인 이름으로 그 함수를 표현할 수 있을까 고민했는데 '함수 이름짓기'라는 내용을 담은 이 문서를 보고 고민이 많이 해결되었다.

함수 이름을 동사로 시작하게 하여 어떤 동작을 수행하는 함수인지를 표현하고 나니 함수의 이름과 다른 기능은 다른 함수로 분리해서 만들게 되었다. 자연스럽게 동작을 하나만 담당하는 함수를 만들게 되었고, 따로 주석을 달지 않아도 어떤 기능을 하는지 쉽게 파악할 수 있었다.

카드게임을 자바스크립트로 구현해보면서, 아래와 같은 방식으로 함수 이름을 적용해보았다.

sortArray() 	// 인자로 전달 받은 배열을 정렬한다.
countPair() 	// 인자로 전달 받은 배열에서 Pair의 개수를 센다.
countRow() 		// 인자로 전달 받은 배열에서 연속된 수의 개수를 센다.
compareArray() 	// 인자로 전달 받은 두 개의 배열을 비교한다.
getResult() 	// 위 함수들을 이용하여 결과 값을 얻는다.

한 기능 한 단어, 한 단어 한 기능

어떤 값을 가져오는 함수가 여러개 있다면 get, find 등의 여러가지 동사를 사용하여 이름을 짓는 대신 get 하나만 사용하여 같은 기능을 하는 함수에 일관성을 부여해야 한다. 다만 반대로 일관성을 너무 고려하여 맥락상 더이상 같은 기능이 아니라고 판단할 수 있는데도 앞서 값을 가져오는 함수에 모두 get을 사용했으니 그대로 get을 사용하는 것은 다른 사람이 코드를 이해하는 것에 어려움을 준다.

클린코드에 따르면 변수나 함수의 이름을 지을 때 가장 중요한 것은 명료성이다. 무조건적인 일관성을 따르는 대신 맥락에 따라 올바른 이름을 지어야하며, 같은 기능에만 같은 이름을 붙여야 한다. 잘 지어진 이름은 이해하기 쉽기에 가독성과 유지보수성을 높인다. 이는 단기적으로는 물론 장기적으로는 더 큰 효과를 가져온다.

프로젝트를 진행하다보면 무심코 생각나는 이름을 그대로 붙이기도 했는데, 내가 작성하는 코드를 읽을 미래의 나와 동료들을 위해 조금 더 고민해서 이해하기 쉬운 직관적인 이름을 짓는 것에 투자해야겠다.

profile
그날그날의 최선을 다하기💪 피드백은 언제나 환영입니다!

0개의 댓글