반응형
getter를 지양하라는 의미는 객체의 책임을 더욱 명확하게 하기 위해서 지양하는 것이지 자료구조나 Test에서는 사용하는게 맞다고 생각합니다.
- getter를 사용했을 때 편리함을 몸으로 느껴보고 작성하게 되었습니다.
메서드를 호출했을 때 Field에 있는 Name과 MoveCounter의 결과가 어떻게 되었는지 Test해봅시다.
1. 리플렉션 활용하기
Class에 있는 Field를 꺼내오는 방식입니다.
- 접근제어자가 public이면 상관없지만 setAccessible 메서드에 true를 주어야 private 필드에 접근이 가능합니다.
- 예외 메시지도 잘 가르쳐줘서 금방 해결할 수 있다고 생각합니다.
- java.lang.IllegalAccessException: class racingcar.domain.car.CarTest cannot access a member of class racingcar.domain.car.Car with modifiers "private final"
2. JUnit AssertJ로 활용해보기
어라라,,, 왜 Test가 통과를 안할까요??
저의 Getter와 연관이 있었습니다.
Test를 통과하려면?
- 주석으로 Getter를 전부 지워주거나
- Test를 고치던가
- Getter를 고치던가
아래의 글을 확인해보면 Assertj의 extracting을 개발했을 때 의견을 알 수 있었습니다.
- extracting() 메서드에 속성 이름을 문자열로 전달하면서 오타가 포함될 수 있다.
- 속성을 다시 이름을 바꾸더라도 테스트 메서드는 문제없이 컴파일 된다.
문제는 테스트를 실행할 때까지 문제를 확인하지 못합니다. 또한, 네이밍 문제를 최종적으로 찾는 데 시간이 걸릴 수 있어 AssertJ는 속성 이름 대신에 getter 메서드 참조를 전달할 수 있도록 지원한다.
이럴꺼면... Getter 쓸래요!
반응형
'개발' 카테고리의 다른 글
java에서 이미지 작업 및 최적화하기 (0) | 2024.06.11 |
---|---|
도메인 주도 설계의 사실과 오해 (0) | 2024.04.29 |
EnumMap 적용하기! (1) | 2023.11.08 |
매직넘버, 리터럴 어디까지 상수 처리해야 돼? (4) | 2023.11.06 |
1주 차 피드백을 2주 차 과제에 적용하기까지 (0) | 2023.11.01 |