본문 바로가기
Spring

Deprecated: 코드의 정중한 은퇴 통보

by daddydontsleep 2025. 11. 12.
728x90
728x90

사진: UnsplashMourad Saadi

Deprecated: 코드의 정중한 은퇴 통보

Deprecated란?

소프트웨어 개발을 하다 보면 @Deprecated 어노테이션이나 관련 경고를 자주 마주치게 됩니다. Deprecated는 "더 이상 권장되지 않음"을 의미하는 표시로, 특정 기능이나 메서드가 곧 사라질 예정임을 개발자들에게 알려주는 신호입니다.

왜 바로 삭제하지 않을까?

"사용하지 말라면서 왜 남겨두지?"라는 의문이 들 수 있습니다. 그 이유는 하위 호환성(Backward Compatibility) 때문입니다.

기존 코드를 사용하는 수많은 프로젝트들이 있는데, 어느 날 갑자기 해당 기능을 삭제하면 모든 프로젝트가 동시에 오류를 일으키게 됩니다. Deprecated는 이러한 충격을 완화하기 위한 유예 기간입니다.

실제 사용 예시

Java

/**
 * @deprecated 이 메서드는 deprecated되었습니다.
 * 대신 getUserById(Long id)를 사용하세요.
 */
@Deprecated
public User getUser(String id) {
    return getUserById(Long.parseLong(id));
}

public User getUserById(Long id) {
    // 새로운 구현
}

Spring Boot

// Spring Boot 2.x
@Deprecated
public void configureMessageConverters() {
    // 구버전 방식
}

// 권장 방식
public void extendMessageConverters() {
    // 새로운 방식
}

Deprecated를 마주쳤을 때 해야 할 일

  1. 경고 메시지 확인: 대체 메서드나 방법이 안내되어 있습니다
  2. 마이그레이션 계획 수립: 당장은 작동하지만, 빠른 시일 내에 수정해야 합니다
  3. 문서 확인: 공식 문서에서 마이그레이션 가이드를 찾아봅니다

팀 리더로서의 관리

팀을 리드하는 입장이라면:

  • 정기적인 코드 검토: Deprecated 경고를 방치하지 않기
  • 기술 부채 관리: Deprecated 항목을 이슈로 등록하고 우선순위 부여
  • 팀 교육: 왜 Deprecated된 코드를 사용하면 안 되는지 주니어 개발자들에게 설명

마무리

Deprecated는 단순한 경고가 아니라 코드베이스의 미래를 준비하는 과정입니다. 오늘 무시한 Deprecated 경고가 내일의 긴급 장애로 이어질 수 있습니다.

경고를 발견했다면, 지금이 바로 리팩토링할 적기입니다.


*"Legacy code는 단순히 오래된 코드가 아니라, 관리되지 않은 코드다."*

728x90
300x250