AI Briefing

코드 품질 개선 - 세션 54: 침묵이 금일 수도 있다

·2025.11.21 11:00

경고를 무분별하게 억제하기보다 원인을 해결하거나 억제 범위를 최소화해야 한다.

API 호출 결과를 나타내는 ApiResult 모델에서 mapSuccessflatMap을 구현할 때, 타입 캐스팅 과정에서 발생하는 unchecked cast 경고를 피하고자 파일 전체에 @file:Suppress("warnings")를 사용하는 경우가 있다. 하지만 이는 향후 발생할 수 있는 중요한 경고(예: 라이브러리 업데이트로 인한 deprecated 함수 사용)까지 숨겨버려 버그를 놓칠 위험이 크다.

경고가 발생했을 때는 다음과 같은 우선순위에 따라 대응해야 한다.

  1. 경고 원인 해결: 가능한 경우 경고를 억제하지 않고 해결하는 것이 가장 좋다. 예를 들어, Kotlin의 out 키워드를 사용하여 타입 파라미터를 **공변성(covariant)**으로 만들거나, Failed 클래스의 타입 파라미터를 조정하여 다운캐스트 없이 문제를 해결할 수 있다.

  2. 억제 범위 및 방식 제한: 원인을 해결할 수 없는 경우(외부 라이브러리 의존성 등)에만 억제를 고려하되, 다음 원칙을 지켜야 한다.

  • 범위 제한: 파일 단위가 아닌 클래스, 함수, 또는 특정 문장 단위로 억제 범위를 좁힌다.
  • 종류 지정: warnings처럼 모든 경고를 끄는 대신, UNCHECKED_CAST와 같이 특정 경고 유형만 지정한다.
  • 이유 명시: 왜 이 경고를 억제해야만 하는지 주석을 통해 명확히 설명한다.

이 요약은 원문 이해를 돕기 위한 큐레이션입니다. 저작권은 원저작자에게 있으며, 정확한 내용과 맥락은 원문을 확인하세요.

요약 오류, 출처 표기 문제, 삭제 요청은 문의 · 건의로 알려주세요.