Refactoring 후기

·2021년 12월 11일
0

아래 내용은 wanted-pre-onboarding Assignment3에 대해 리팩토링을 진행한 내용을 다루고 있습니다.

리팩토링

리팩토링 코드
https://github.com/yhshin0/redbrick-subject

기간

2021.11.29 - 2021.12.02

클린 코드

javascript clean code를 참고하여 리팩토링을 진행

  • 상수, 에러 메시지 분리
  • return type 명시
  • 인자가 3개 이상인 경우 구조 분해 할당 적용
  • 메소드 분리
  • 로직 이동(예: 컨트롤러에서 서비스로 비즈니스 로직 이동)
  • 매개변수 변경(예: limit, offset -> page, pageSize)

이슈

jwtModule secretOrPrivateKey

이전에 작성되어 있던 secretOrPrivateKey 옵션은 deprecated 된 옵션이기 때문에 아래와 같은 에러 메시지가 출력된다.

따라서 이를 secret 옵션으로 수정하였다.
auth.module.ts

    JwtModule.registerAsync({
      imports: [ConfigModule],
      useFactory: async (configService: ConfigService) => ({
        secret: configService.get('JWT_SECRET'),
        signOptions: { expiresIn: '1h' },
      }),
      inject: [ConfigService],
    }),

unit test 오류

리팩토링을 하면서 메소드명을 수정하거나 일부 로직이 변경되어 기존에 작성했던 유닛 테스트에서 오류가 발생하였다.

후기

처음으로 리팩토링을 진행해보았다. 이전에 다른 코드를 작성할 때도 리팩토링을 해야지 해야지 하다가 안하고 넘어가서 한참 후에 해당 코드를 다시 볼 때 '이게 무슨 코드지', '이 값은 뭐지', '왜 이 함수를 썼지' 등등 이해를 못했던 적이 많았는데 이번에는 그러한 느낌이 들기 전에 리팩토링을 해보았다.

딱히 코드 구조나 DB 모델링을 건들지는 않고 javascript clean code 페이지를 참고하여 리팩토링을 진행해보았는데 주로 변수, 함수명을 수정한다던가, 하드코딩 된 부분에 대해 변수로 따로 분리한다던가 등에 초점을 맞추어 진행하였다.

그 결과 이전보다는 코드를 보기가 쉬워진 것처럼 보이는데 다른 사람 눈에는 어떨지 잘 모르겠다...
그리고 리팩토링이 완벽하진 않은 것 같다. 예를 들어 네이밍 관련해서 일관성이 없다거나, 커스텀 리포지토리를 game에만 적용했다던가 그런 점에서 미루어 볼 때 일관성이 없어서 완성도가 떨어지는 듯 하다.
이러한 점들은 개선해야 할 부분으로 보이며, 나중에 팀으로 코드를 작성할 때에도 이런 부분을 지킬 수 있도록 코드 컨벤션을 자세하게 정하고 코딩을 하는 것이 좋을 것 같다.

0개의 댓글