배경
최근에 팀원분이 버그를 해결해서 pr을 올려주셨다.
기존 코드는 equals 메서드를 직접 오버라이드 해서 일부 필드만 비교하는 형태였는데 모든 필드를 비교하도록 수정해주셨다.
정상 동작은 확인했으나 "data class에서 자동으로 오버라이드해주는 equals로는 해결 안 되나?"라는 생각이 들었다.
자동 제공을 해주는 것만 알았지 구체적으로 어떻게 동작하는지까진 확인을 해본 적이 없었다.
결론
그래서 직접 디컴파일을 해봤는데 data class는 모든 필드에 대해 동등성을 비교하는 방식으로 동작하고 있었다.
이 점을 리뷰로 남겼고, 역할이 겹치므로 수정해주셨던 코드를 삭제하는 방향으로 개선을 해냈다.
추가로 hashCode에 대한 오버라이드 코드도 삭제도 같이 해주셨는데, 검색을 해보니 그 이유는 hashCode와 equals는 쌍으로 다뤄져야 한다고 한다.
간단했지만 유익한 코드 리뷰 경험이어서 기억에 남았다.
누군가 data class 디컴파일 결과에 대해 궁금한 사람이 있다면 이 글이 참고가 되길 바라며 마무리!