Skip to content

DOCS.유틸함수

negu63 edited this page Aug 31, 2021 · 4 revisions

유틸함수. 넌 누구냐

우리 프로젝트의 백엔드는 아래 이미지와 같이 이루어져 있습니다.

image

우리 프로젝트의 에러 처리는 아래와 같이 하고 있습니다.

throw errorGenerator({
  message: 'POST /api/auth - account not found',
  code: 'auth/account-not-found',
});

아래와 같이 에러를 만들어서 throw 해주면,

function errorHandler(err: CustomError): ErrorType {
  switch (err.code) {
    case 'auth/account-not-found':
      return { statusCode: 404, errorMessage: err.customMessage || '없는 계정입니다' };
    
    default:
      return { statusCode: 500, errorMessage: '다시 시도해주세요.' };
  }
}

아래와 같이 받아서 응답 처리를 해줍니다.

errorGenerator함수는 단순히 에러를 저 포맷에 맞게 Custom Error를 만들어주는 역할을 해서 utils의 폴더에 넣었습니다. 하지만 과연 이 프로젝트에서만 사용되는 errorHandlerutils 폴더에 넣는게 맞는가?에 대한 의견차이가 나타났습니다.

  • 유틸파 : errorGeneratorutils폴더에 있으니, 에러를 관리하는 errorHandler도 같이 utils 폴더에 있는게 맞다!

  • 분리파 : utils폴더라는 것은 어느 프로젝트에 들어가든 사용이 가능한 조그만 함수들이니, 이 프로젝트에 종속된 errorHandler는 따로 분리하는 것이 맞다!

이렇게 분리가 된 이유가 뭘까요? 분리파인 저의 생각으로는 유틸파와 분리파가 utils 폴더의 역할에 대해서 다르게 생각하고 있기 때문이 아닐까 싶습니다.

결론

결국 utils폴더 안에 모두 다 넣기로 했습니다. 크게 기능에 문제가 되는 상황도 아니었고, 웹 표준을 어기는 일도 아니었습니다. 단순히 파일의 위치가 어디에 있는게 옳은 가에 대한 문제였습니다. 중요한 문제도 아니었고, 합의만 된다면 어디에 들어가든 크게 상관 없는 문제였기 때문에 비교적 빠르게 결론을 내릴 수 있었습니다.

회고

  • 박기덕(분리파) : 아직도 utils폴더의 의미는 어느 프로젝트에 들어가든 사용이 가능한 조그만 함수라고 생각한다. 하지만, utils에 넣어서 해봐도 문제될 부분은 전혀 없었다. 다만 나중에 프로젝트가 커지고 유틸함수가 많아진다면, errorHandler와 같이 프로젝트에 종속된 함수는 따로 분리하는 것이 더 통일성있지 않을까 생각한다.
  • 서그림 : 이 문제를 정할 당시에는 큰 의견이 없었다. 그리고 프로젝트를 진행하고 끝난 시점에서 이야기하자면 utils에 넣은 것이 더 좋은 것 같다. 프로젝트 규모가 훨씬 커지면 모르겠지만, 지금의 규모에서는 그렇다. 백엔드에서 API를 만들기 위해 거쳐야 하는 계층과 파일이 너무 많았고, 에러 처리를 utils에 넣음으로서 그 계층을 한 단계 줄여준 것 같다는 것이 나의 개인적인 이유이다.
  • 손원우 : utils는 어느 프로젝트에 들어가든 사용이 가능한 것들의 집합이라고 생각한다. 그렇다고 해서 에러 처리를 하는 역할이 그렇지 않다고는 말할 수 없는 것 같아서 분리해도 좋고 넣어도 좋다고 생각했다. 확장성을 고려했을때 이후에도 구조의 일관성을 유지하기 위해서는 분리하는 것이 맞는 것 같다!
  • 윤민상(분리파) : errorHanlder는 유틸함수가 아니라고 생각한다. 실제로 아니고 error부분을 같이 관리하고 싶다면 차라리 error-generator를 error 폴더로 분리하는 게 맞다고 생각한다.
Clone this wiki locally