배경

최근에 팀원분이 버그를 해결해서 pr을 올려주셨다.

기존 코드는 equals 메서드를 직접 오버라이드 해서 일부 필드만 비교하는 형태였는데 모든 필드를 비교하도록 수정해주셨다.

 

정상 동작은 확인했으나 "data class에서 자동으로 오버라이드해주는 equals로는 해결 안 되나?"라는 생각이 들었다.

자동 제공을 해주는 것만 알았지 구체적으로 어떻게 동작하는지까진 확인을 해본 적이 없었다.

 

결론

그래서 직접 디컴파일을 해봤는데 data class는 모든 필드에 대해 동등성을 비교하는 방식으로 동작하고 있었다.

이 점을 리뷰로 남겼고, 역할이 겹치므로 수정해주셨던 코드를 삭제하는 방향으로 개선을 해냈다.  

 

추가로 hashCode에 대한 오버라이드 코드도 삭제도 같이 해주셨는데, 검색을 해보니 그 이유는 hashCode와 equals는 쌍으로 다뤄져야 한다고 한다. 

 

간단했지만 유익한 코드 리뷰 경험이어서 기억에 남았다.

누군가 data class 디컴파일 결과에 대해 궁금한 사람이 있다면 이 글이 참고가 되길 바라며 마무리!  

 

'Android > 공부' 카테고리의 다른 글

컴포즈 - 1장 컴포즈 앱 첫 빌드  (0) 2025.01.19
Fragment에선 왜 viewLifecycleOwner를 써야할까  (0) 2024.09.08
retrofit의 비동기 처리  (0) 2024.04.29
Flow  (2) 2024.03.14
Repository의 효용에 대한 고찰  (0) 2023.03.16