[SB 3기] 코드잇 스프린트 미션 5 회고

JHLee·2025년 6월 2일

📖 미션 내용

🚀 스프린트 미션 5

  • RESTful API로 재설계 및 리팩토링
  • Swagger를 활용한 API 문서 자동화
  • 프론트엔드 연동
  • PaaS를 활용한 배포
    - Railway.app 활용

💡 코드 리뷰 사항 및 개선 포인트

📌 스프린트 미션 5

1. AOP 적용 시, 패키지 기준이 아닌 커스텀 어노테이션 방식 활용

AOP를 특정 패키지 기준으로 적용할 경우, 해당 패키지가 변경되면 코드도 함께 수정해야 하는 문제가 발생할 수 있다.

// AS IS
@Around("execution(* com.sprint.mission.discodeit.service..*(..))")

// TO BE 
@Retention(value = RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface Logging {
    String value() default "";
}

@Around("@annotation(com.sprint.mission.discodeit.annotation.Logging)")

위와 같이 커스텀 어노테이션을 정의해 설정하면, 코드 변경에도 유연하게 대응할 수 있다.

2. 반복되는 로직은 static 메서드로 분리하여 재사용

resolve ~ 등의 유사한 처리를 하는 메서드가 반복되는 경우, 이를 별도의 유틸리티 메서드로 추출해 재사용하는 것이 효율적이다.

3. 매직 넘버는 상수 처리

아래의 코드에서 숫자 5는 상수로 선언하여 의미를 명확히 표현하는 것이 좋다.

// AS IS
Instant instantFiveMinuteAgo = Instant.now().minus(Duration.ofMinutes(5));

// TO BE
private static final int TIMEOUT_MINUTES = 5;
Instant instantFiveMinuteAgo = Instant.now().minus(Duration.ofMinutes(TIMEOUT_MINUTES));

회고

👍 좋았던 점

  • RESTful한 API로 리팩토링 하는 과정을 통해 REST의 개념을 더 이해할 수 있었고, 어떻게 해야 더 RESTful하게 설계할 수 있을지 고민해볼 수 있었던 점이 좋았다.

😅 아쉬운 점

  • ❌ (이번 미션에서는 아쉬운 점이 딱히 없었다.)

🧠 배운 점

  • RESTful한 API 설계 원칙에 대해 더 명확히 이해할 수 있었다.
  • 커스텀 어노테이션을 활용하는 방법을 새롭게 배웠다.
  • AOP 적용 시 커스텀 어노테이션을 활용하는 방법을 구현해보면서, 생각지도 못한 부분에서 유지보수성과 유연성을 높일 수 있다는 점을 알게 되었고 이러한 설계를 중요하게 고민해봐야 한다는 것을 알게 되었다.
  • 반복되는 유틸성 로직을 static 메서드로 추출하여 재사용 하는 것이 유지보수에 효과적임을 다시 깨달았다.(알고 있는 개념이라도 실제 코드에 꾸준히 적용하는 습관이 중요하다..⭐️)
  • 매직 넘버는 의미 있는 상수로 치환해 코드의 가독성과 명확성을 높이는것이 중요하다.
profile
개발자로 성장하기

0개의 댓글