함수 분리는 항상 좋은 것일까?
내가 안티 패턴 생성자였다.
무슨 일이 있었냐면..
audio resource 가져오는 api 호출과, api 호출 이후에 audio element에 설정해주는 로직이 함께 쓰이니까 하나로 묶자.
부모와 자식 모두가 쓰니까, 나는 함수 하나로 사용하고 싶어!
axios 에러 체크도 모두 하나의 함수가!!! 너넨 한 몸이니까!
그리고 에러 발생시 아래 로직 실행되지 않도록 얼리 리턴까지 처리해야하니까.. 값 체크를 위해
boolean
값을 리턴해야지. 호출부에서는boolean
값 여부를 체크해서 얼리 리턴 해주면 근사해!해당 함수의 이름은 fetch와 set을 다하니까 그래 명확한게 좋지?
fetchAndSetAudioUrl
이면 충분해!
코드리뷰를 받았다
땡떙님, 이름에서부터 나타나듯이 단일 책임 원칙에서 벗어나는 것 같아요!
early return을 하기 위해
boolean
값을 추가하고 리턴하는 방식이 자연스럽지 못한것 같아요!fetch와 set이 뒤섞인 느낌이에요.
처음엔 몰랐다. fetchAndSetAudioUrl
함수가 범인이라는 걸..
하나의 함수를 묶어서 호출하는게 추상화라고 생각했다.
그런데 말입니다.. 함수 분리를 분리함으로써..리턴값이 필요해지고, try catch문을 이중으로 써야하고..
error
객체를 처리할 필요가 없는데도 던지고..로직이 꼬인다 꼬여..api 호출이 포함된 함수로 분리하니까 매번 추가되는 try catch문은 어떻구요..
여기서 질문하게 되었다. 이 함수 진짜 존재해야 할까?
함수 분리가 좋은 건, 그로 인해 이득이 있어야 한다.
단일 책임 원칙을 지키는가
가독성이 개선되었는가
함수 줄수를 줄였는가
그게 아니라면 불필요한 질문일 수 있으니 또 질문해야한다.
이 함수 분리 꼭 필요한가?
함수 네이밍이 명확하지 않으면 단일책임원칙을 어기고 있는것이다. 특히
And
키워드가 쓰이면 이것은..진정한 스멜이지..
그래서 느낀 것..
의도를 가지고 코드를 작성하자. 무엇을 개선하려고 하는지 스스로 물어보고 명확한 의도가 드러나게 코드를 짜자
그럼에도 불구하고 코드 스멜 맡아서 더 좋는 방법을 찾느라 토요일 쓴 것 칭찬해!! 하나씩 배워나가자~!
이 경험으로 하고싶은 액션 아이템
-
- 책 읽고 프로덕션에 반영하기