NodeJs

TDD[7] 코드 리팩토링 및 데이터베이스 연동

코딩클로스 2021. 4. 1. 05:02

리팩토링

역할에 따라 파일로 분리하자

api/user/index.js

• api/user/user.ctrl.js

• api/user/user.spec.js

 

리팩토링을 하면서 리팩토링이 잘됬는지 알수있

 

복잡한 코드를 정리해보겠다. 

./index.js

기존의 복잡한 코드

밑과 같게 api/user/index.js 파일을 만들자

새로 만든 api/user/index.js 파일이다.

api/user/index.js

근데 이렇게 나누면 문제가 생긴다. app이라는 어플리케이션 변수 express 객체가 정의되어 있지않다. 

이 문제를 해결하기 위해서 라우터 객체다.  그래서 위에 코드를 보면 2번줄을 추가했다.

 

 

./index의 코드가 이렇게 줄었다.

11번 줄은  /users 모든경로에 대해서는 user 라우터를 사용하겠다는 의미

./index

 

 

그래도 코드가 기능에 비해 많이 길다.  밑그림과 같이 드래그한 부분이 컨트롤러다.

컨트롤러 함수들을 따로 모아보자.  api/user/index.js은 라우팅만 하고 그외에 로직들은 컨트롤러에게 위임하는 구조를 짜보자

api/user/index.js

 

모듈로 다 만들어서 공개하자

api/user/ctrl.user.js 파일에 users리스트를 넣고 변수마다 콜백함수를 배치하자

api/user/ctrl.userjs

api/user/ctrl.userjs 에서   공개한 모듈을 3번줄과같이 받아온다음

함수들을 라우터마다 넣어주자

api/user/index.js

처음에 작성한 코드를 보면 오로지 서버를 구성하는 기능만 수행함

미들웨어 추가하는 부분이 핵심

index.js

그리고 index.spec.js 파일명을 user.spec.js 로 알맞게 변경하자

그리고 경로도 api/user 로 옮기자 그리고 패키지파일도 수정하자