본문 바로가기
회고록

함수 이름 잘 짓는 방법

by notcherry 2024. 6. 17.

 

입사 후 처음으로 받은 업무!

동일한 필터링이 a에서는 되지만 a' 버튼을 누르면 나오는 새창에서는 필터링 되지 않는 이슈를 수정해달라는 업무였다.

유지 보수였기 때문에 열심히 기존 코드를 읽고 해석하고, 변수 명을 추측하고 db 테이블을 분석하고 이해하며 최대한 기존 코드와 로직이 비슷하게 작성하려고 했다. (일관성 유지가 중요하다고 생각)

 

a에서 발동되는 필터링 로직을 살펴보니, 관리자가 "필터링 사용하실게요~"하면 doNotFilteringDataIn 이라는 함수가 작동하면서 관리자가 필터링 하겠다는 데이터(FilteringData)가 걸러지는 방식이었다.

 

이 로직을 참고하면 되겠구나! 생각하고 빨리 고치려고 노력했다. pr을 얼른 올려보고 싶었기 때문 ㅎㅎ

 

새창에서는 필터링 조건은 같지만, a에 나오는 데이터보다 양이 많았고, 관리자가 필터링을 한다고 했는지 안했는지 판단 후 doNotFilteringDataIn 함수를 호출해야 했다. 기존 함수와 비슷하게 네이밍하기 위해, 코드 컨벤션이 있는지 확인 후 doNot00DataIn 이라는 함수로 이름을 지었다. 00Data가 관리자가 필터링하고 싶어하는 데이터의 이름이다. 직역하면 나는 00데이터를 in하지 않겠다. 라는 뜻으로 나름 모두가 이해하겠군! 이라고 판단하고 지었다.

 

그리고 함께 일하는 동료분께서 감사하게도 정말 꼼꼼하게 내 첫 pr을 봐주셨는데,! 생각지도 못한 오류를 발견했다. 함수에 부정어가 들어가있으면 참, 거짓(Yes or No)으로 답을 하게 된다. 그래서 내 함수도 처음 읽었을 때는 나의 의도(I will filter data!)와는 다르게 Do you want filtering data? 혹은 Don't you want filtering data? 처럼 느껴져서 마치 대답을 네! 필터링 할게요! 이렇게 해야하는 느낌으로 전달된다는 것이다. 그렇다면 boolean 값이 도출되어야 하는데 실제 내 함수의 도출값은 필터링된 데이터 리스트다.

 

이해하는 데에서 시간이 오래걸리기 때문에 사실 변수명, 함수명을 정할 때는 시간을 많이 들였어야 하는데 나는 일관성이라는 좁은 시야를 갖고 서두르다보니 놓쳤던 부분이었다. 아 이렇게 생각할 수도 있구나. 라는 깨달음과 함께 단순히 필터링한다는 역할에 충실하게 filtering00Data로 이름을 바꿨다. 기존의 코드의  doNotFilteringDataIn함수의 이름은 바꾸지 못하지만, 나은 방향성을 찾아 코드의 질을 높이며 쌓아가는 것이 재미있었다. 마치 사료를 작성하는 내관같았달까 ㅎㅎ 

 

무언가 새롭게 이름을 짓기 전에는 먼저 이 친구의 존재 이유는 무엇인지 깊게 생각해보고, 아무에게나 이름을 들었을 때 어떤 느낌을 받았는지 물어보는 것도 좋겠다는 생각이 들었다.