NestJS 코드 리팩토링

개요

기존 코드가 너무 복잡했습니다.

30분 동안 NestJS를 사용하는 방법을 배우고 싶었고 그 과정에서 나머지를 사용하는 방법을 배웠기 때문입니다.

이렇게 들어왔을 때 문제에 부딪혔을 때 문제를 찾아보면서 작업을 해야 했는데, 그때는 한번만 하면 된다는 태도로 같은 구성의 중복 코드를 사용하고 있었습니다.

이렇게 써서 한곳을 바꿨는데 다른곳에서도 똑같은 논리가 나와서 어지러워졌다.


그래서 어영과 부영을 넘어선 부분을 수정하기 위해 리팩토링을 하기로 했습니다.

GitHub – bjc1102/clipplanet-server: 클립플래닛-서버

클립 플래닛 서버. GitHub에서 계정을 생성하여 bjc1102/clipplanet-server 개발에 기여하십시오.

github.com

DTO

“Data Transfer Object”의 약자로 데이터베이스나 서비스에서 데이터를 전송하기 위해 일반적으로 사용되는 객체입니다.

요청 본문을 typescript로 사용하면서 정의하는 방법을 몰라 그냥 Ignore로 무시했습니다.

그런데 나중에 함수 인자로 넘겼을 때 종류를 지정하지 못해서 계속 에러가 나고 다시 풀려고 코드를 이상하게 써놓은 걸 보니 안 하는 것보다 안 좋은 것 같다는 생각이 들었습니다.

그래서 가능한 한 최선을 다해 알고 지정하기 위해 날짜를 찾고 있었습니다.

DTO를 작성하면 데이터를 검증할 수 있다는 것도 알게 되었고, Nest에서 여러 파이프를 제공한다는 것도 알게 되었습니다.

나중에 필요하면 더 많은 정보를 찾아보겠습니다.

기능: 클래스 검사기, 클래스 변환기 · bjc1102/clipplanet-server@77b89db

파일 트리 보기 33개의 추가 및 20개의 삭제가 있는 4개의 변경된 파일을 표시합니다.

github.com

설명서 | NestJS – 진보적인 Node.js 프레임워크

Nest는 효율적이고 확장 가능한 서버 측 Node.js 애플리케이션을 구축하기 위한 프레임워크입니다.

프로그레시브 JavaScript를 사용하고 TypeScript로 구축되었으며 OOP(Object Oriented Programming), FP(Functional Programming) 및 FRP(Functional Programming)의 요소를 결합합니다.

docs.nestjs.com

직무 분리

각 데이터베이스 테이블에 직접 액세스하여 각 서비스에 사용했기 때문에 응답이 없었습니다.

코드가 너무 길어서 편집할 곳을 직접 찾아와야 한다는 생각이 계속 들어서 계속 이야기를 하다 보니 작업이 길고 만지기 힘들었습니다.

그래서 리포지토리를 서비스로 나누어 훨씬 관리하기 쉽게 수정했습니다.

조금 더 찾아보니 의존성 주입의 개념에 대해 알게 되었는데, 객체 간의 결합을 줄이고 코드 재사용성을 높인다고 합니다.

그래서 제대로 추상화하는 것이 중요하다고 느꼈고 CRUD로 분류하는 것이 좋겠다고 생각했습니다.

(DI) 의존성 주입이란 무엇입니까?

의존성 주입, 의존성 주입이란 무엇이며 그 이점을 요약한 글입니다.

velog.io

설명서 | NestJS – 진보적인 Node.js 프레임워크

Nest는 효율적이고 확장 가능한 서버 측 Node.js 애플리케이션을 구축하기 위한 프레임워크입니다.

프로그레시브 JavaScript를 사용하고 TypeScript로 구축되었으며 OOP(Object Oriented Programming), FP(Functional Programming) 및 FRP(Functional Programming)의 요소를 결합합니다.

docs.nestjs.com

리팩터링: userRepository -> userService bjc1102/clipplanet-server@90b8f15로 리팩터링

파일 트리 보기 35개의 추가 및 22개의 삭제가 있는 4개의 변경된 파일을 표시합니다.

github.com

검토

이번에 재설계하면서 스스로 뭔가 이상한 짓을 한 것 같은 기분이 들었다.

어영부영을 건너뛰려고 한 이유는 당시 개발하던 시절을 돌이켜보면 기존에 사용하던 프레임워크의 구조와 타이밍이 어려워서 최대한 긴 구조를 복사해서 붙여넣었기 때문입니다.

처음으로. 물론 나쁜 버릇이지만 제가 배운 방법 중 하나라고 생각하고 결국 잘못된 것을 키우게 되어서 한두 달 정도 많은 일들을 해결해야 했던 것 같습니다.

이제부터 구조를 배우고 그것을 작은 구조로 잘라서 생각해보려 합니다.

이것이 작동하지 않으면 더 작은 것을 찾으면서 좁히면 해결할 것이라고 최근에 느꼈습니다.

이 목적을 위한 많은 리소스와 좋은 검색 봇도 있습니다.

그래서 여기서부터 잘할 수 있을 것 같아서 끝냈다.