공학/단상

리팩터링

카카루1331 2020. 8. 17. 09:55

마틴 파울러의 <리팩터링> 2판을 읽고 있다.

다루는 주제도 그 내용도 참 좋다.

코드를 다듬는 류의 서적 중에 가장 좋다.

이전에 <읽기 좋은 코드가 좋은 코드다>도 꽤 재밌게 읽었는데,

<리팩터링>은 그 이상이다.

어려서부터 블로그를 해와서 그런지 병적으로 뭘 자꾸 다듬는다.

다듬지 않으면 글이 못 봐줄 정도라서

여하튼 그런 습관 때문인지 코드를 짜면서도 비슷한 행위를 하게 된다.

변수, 함수 네이밍, 함수(서브루틴) 분리, 객체화 등등

햇수가 지날수록 이런 것들의 중요성을 더 느낀다.

그나저나 default parameter를 쓰면 되게 편하더라.

작업자가 거의 신경 쓰지 않아도 되는 영역이거나,

당장은 필요 없지만 추후에 확장성을 고려해야 할 경우에 그렇다.

실제로 이런 경우가 있었다.

unit test 작성 시, axios mocking이 필요했다.

 

한편 운영 코드에서는 http request body 전처리가 이루어진다.

따라서 mocking 시에도 똑같은 전처리가 필요했다.

그래서 나는 object 타입의 파라미터를 전처리 해주는 함수를 작성했다.

기존 request wrapping 영역에서 전처리 부분만 추출하면 되는 쉬운 작업이었다.

그런데 한 가지 고려할 점은 method (get, post, put, etc...)에 따라서 전처리 로직이 바뀐다는 것이다.

 

애매한 것은 대부분의 API 요청은 post 방식이라는 점이었다.

그렇다면

 

"이걸 굳이 작업자가 일일이 타이핑을 해야 할까?",

"애초에 그런 필요성을 알아야 하는가"

 

하는 의문이 일었다.

그렇지만 확장성 고려는 필요했다.

 

그래, 그럼 default parameter를 사용하자.

const setParameter = (param, method = 'post') => {
  // ...
}

이렇게 시그니처 만들었어야 했는데.

흙흙...

다른 메소드는 잘 만들게요...