코드 품질 개선 - 세션 54: 침묵이 금일 수도 있다
·2025.11.21 11:00
핵심 내용
경고를 무분별하게 억제하기보다 원인을 해결하거나 억제 범위를 최소화해야 한다.
자세히 보기
API 호출 결과를 나타내는 ApiResult 모델에서 mapSuccess나 flatMap을 구현할 때, 타입 캐스팅 과정에서 발생하는 unchecked cast 경고를 피하고자 파일 전체에 @file:Suppress("warnings")를 사용하는 경우가 있다. 하지만 이는 향후 발생할 수 있는 중요한 경고(예: 라이브러리 업데이트로 인한 deprecated 함수 사용)까지 숨겨버려 버그를 놓칠 위험이 크다.
경고가 발생했을 때는 다음과 같은 우선순위에 따라 대응해야 한다.
-
경고 원인 해결: 가능한 경우 경고를 억제하지 않고 해결하는 것이 가장 좋다. 예를 들어, Kotlin의 out 키워드를 사용하여 타입 파라미터를 **공변성(covariant)**으로 만들거나,
Failed클래스의 타입 파라미터를 조정하여 다운캐스트 없이 문제를 해결할 수 있다. -
억제 범위 및 방식 제한: 원인을 해결할 수 없는 경우(외부 라이브러리 의존성 등)에만 억제를 고려하되, 다음 원칙을 지켜야 한다.
- 범위 제한: 파일 단위가 아닌 클래스, 함수, 또는 특정 문장 단위로 억제 범위를 좁힌다.
- 종류 지정:
warnings처럼 모든 경고를 끄는 대신,UNCHECKED_CAST와 같이 특정 경고 유형만 지정한다. - 이유 명시: 왜 이 경고를 억제해야만 하는지 주석을 통해 명확히 설명한다.
이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.