Serializable을 구현할지는 신중히 결정하라.

클래스를 직렬화하려면 Serializable 를 impliments만 하면 되기 때문에 간단하고 신경쓸 부분이 없다고 생각하겠지만, 실제로는 훨씬 더 복잡하다. 직렬화를 지원하는것은 간단할지 몰라도 아주 값비싼 일이다.

Serializable을 구현하면 릴리즈한 뒤에는 수정하기 어렵다.

<aside> 🔥 직렬화를 구현하고자 한다면 감당할 수 있을 만큼 고품질의 직렬화 형태로 설계해야한다. 고생이 그만큼 따르고 개발비용이 발생하지만 보상을 보장한다.

</aside>

직렬화가 클래스 개선을 방해하는 예시

스트림 고유 식별자 즉 직렬 버전 UID(Serial Version ID)

버그와 보안 구멍이 생길 위험이 높아진다.

클래스의 신버전을 릴리즈 할 때 테스트할 것이 늘어난다.