본문 바로가기

TIL(Today I Learned)

TIL-230919('행동대장' 코드리팩토링 - 중복 코드 수정)

📝오늘 공부한 것

  • 실전프로젝트 - '행동대장' 코드리팩토링(중복 코드 수정)
  • 자바의 정석 스터디 - Chapter 07 '객체지향 프로그래밍2' ~ 추상클래스
  • 기술면접 스터디

 

📌 코드리팩토링 - 중복된 코드 수정 

 

⛔ 문제점 ①

  • 기능별로 Exception클래스를 만들다 보니 같은 코드임에도 불구하고 이름만 다른 클래스가 여러 개 생겼다.
    이렇게 비슷한 예외 처리 로직을 각각의 클래스에서 중복으로 구현하다 보니 코드의 가독성과 유지보수가 어렵다고 느껴졌다.
  • CustomExceptionHandler을 통해 기능별로 예외처리를 하였다.
    기능별로 Exception클래스마다 handler를 만들어주었더니, Exception의 이름만 다른 중복된 코드들이 생겼다.

 

💯 해결

  • CommonException을 만든 뒤 모든 Exception들을 통합하여 중복된 코드를 최소화하고 유지보수성을 향상시켰다.
  • 기존에는 각 Exception클래스마다 별도의 Handler가 있어 중복 코드가 발생했다. 이 문제를 해결하기 위해 CommonException에 대한 Handler를 생성하였다. 이 Handler는 모든 CommonException에 대한 처리를 하게 한다.
  • CommonException 클래스를 사용함으로써 예외 메시지와 상태코드의 관리가 용이해진다.

[폴더 구조]

<Before>                                                                                                                                                      <After>                                  

 

[Exception 클래스]

<Before>
                                                           <After>

 

[CustomExceptionHandler]

<Before>                                                                                                                                                 <After>                      


⛔ 문제점 

팀원들이 개별적으로 에러 코드를 작성하여 프로젝트에 추가하다 보니 에러 코드가 점점 늘어나면서 사용하려는 에러 코드가 이미 존재하는지 확인하지 못한 채 중복해서 만들게 되었다. 이로 인해 비슷한 내용의 에러 코드가 여러 개 존재하는 문제가 발생했다. 

 

💯 해결

이런 상황을 해결하기 위해 중복된 내용의 에러 코드를 통합하기로 결정하였다.

가입되지 않은 계정과 해당 유저가 존재하지 않는다는 의미가 동일하다고 생각되었고, 이 코드를 사용하였던 부분을 수정하려고 보니 심지어 사용되지 않고 있는 코드였다!! 그래서 NO_USER 에러코드를 삭제하였다.


⛔ 문제점 ③

지금 handler에서는 ErrorResponse를 통해 에러메시지만을 보내고 있다.

불필요한 과정이 한 번 더 생기기 때문에 효율적이지 않아 보인다.

 

💯 해결

ErrorResponse를 없앴다. 

이로 인해 중간 단계를 제거하고 예외처리로직을 더 간결하게 만들 수 있었다.


개선할 점💪🏻

오늘 리팩토링을 통해 코드 중복 문제를 해결하고, 예외 처리 로직을 효율적으로 관리할 수 있게 되었다. 이로 인해 코드의 가독성이 향상되었고, 유지보수성이 높아졌다.

또한, 예외 처리의 중요성과 공통 처리 패턴의 중요성을 배웠다. 앞으로의 프로젝트에서는 중복 코드를 최소화하고 일관된 예외 처리를 할 수 있도록 할 것이다!!