티스토리 뷰
[이펙티브 자바] 아이템 27 비검사 경고를 제거하라
네오의 수업에서
테스트 코드에서 함수명을 한글로 사용할 수는 있지만 이럴 경우 컴파일 경고(Compile Warnning)
가 발생하며 이러한 경고의 경우 프로그램이 커지고 경고가 많아질 수록 디버깅에 어려움을 주는 요소이기때문에 그때 그때 제거해주는 것이 좋다는 말을 해주셨다.
그리고 경고를 없애는 방법으로는 다음의 두가지를 말씀해주셨다.
1. @SuppressWarnings("NonAsciiCharacters")
사용
2. 함수명을 영어로 만들고 @DisplayName
으로 설명 추가
당시 나는 모든 테스트 코드의 함수명을 한글로 만들어놓았기 때문에 이번 미션까지는 @SuppressWarnings("NonAsciiCharacters")
를 사용하여 경고를 없애고 다음 미션부터는 함수명을 영어로 만들어야겠다고 생각했다.
@SuppressWarnings("NonAsciiCharacters")
public class WinnerTest {
@Test
void 우승자_선정() {
List<Car> cars = Arrays.asList(
new Car("aa", 3), new Car("bb", 2),
new Car("cc", 2), new Car("dd", 1));
Winner winner = new Winner();
assertThat(winner.getWinners(cars)).contains("aa");
}
}
그러다가 리뷰어 희봉이 "어떨때 @SuppressWarnings
을 사용하게 되는지?"를 더 생각해보면 좋을 것 같다는 조언을 해주셨다. 🙇♀️
알고보니 한글명 메소드에 대한 경고를 제거할 때 무조건 @SuppressWarnings("NonAsciiCharacters")
을 사용해야하는 것이 아니라 모든 경고를 제거할 수 있는 @SuppressWarnings("all")
또한 사용할 수 있으며 각각의 경고에 대한 토큰이 다르며 여러 토큰을 사용할 수 있었다.
사용 가능 토큰 관련 문서
모든 경고를 제거해 주는 것이 좋지만 제거하기 어려울 경우, 하지만 개발자가 생각했을 때 안전한 경우 @SuppressWarnings
어노테이션을 사용하여 강제적으로 경고를 제거하는 방법을 사용한 다는 것을 알게되었다.
✅ 다음과 같이 안전한 이유를 항상 주석으로 명시해 주는 것이 좋다고 한다.
// 생성한 배열과 매개변수로 받은 배열의 타입이 모두 T[]로 같으므로 올바른 형변환입니다
@SuppressWarnings("unchecked")
Ref.
https://haranglog.tistory.com/3
'Backend > Java' 카테고리의 다른 글
Null vs. Empty vs. Blank (feat. isEmpty, isBlank) (2) | 2022.02.18 |
---|---|
부생성자에서 주생성자를 호출하라 (0) | 2022.02.17 |
Random vs. ThreadLocalRandom (2) | 2022.02.17 |
[우아한테크코스/프리코스] 2주차 백엔드 피드백 (0) | 2021.12.08 |
[우아한테크코스/프리코스] 1주차 백엔드 피드백 (0) | 2021.12.04 |