[Effective-Java] Chapter8 #50. 적시에 방어적 복사본을 만들라
·
Reference/Effective-Java
📌 방어적 프로그래밍 💡 클라이언트가 우리의 불변식을 깨뜨리려 혈안이 되어 있다고 가정하고 방어적으로 프로그래밍하라. 자바로 작성한 클래스는 시스템의 다른 부분에서 무슨짓을 하든 그 불변식이 지켜진다. 하지만 악의적인 의도를 가지거나, 순전히 실수로 클래스를 오작동하도록 만들 수 있다. 📌 As-is. 불변식을 지키지 못한 클래스 public final class Period { private final Date start; private final Date end; /** * @param start 시작 시각 * @param end 종료 시각. 시작 시각보다 뒤여야 한다. * @throws IllegalArgumentException 시작 시각이 종료 시각보다 늦을 때 발생한다. * @throws Nu..