가변성을 제한하자 가변성의 문제점 상태에 대한 코드 이해 및 변경 추적, 디버깅이 어려움 상태에 대한 일관성 보장이 어려움 멀티스레드 환경에서 적절한 동기화 필요 모든 상태에 대한 테스트가 어려움 결론 : 가변성 증가 -> 일관성 문제 발생 및 코드 복잡성 증가 Kotlin에서 가변성을 제한하는 방식 읽기 전용 프로퍼티 val mutable 컬렉션과 immutable(읽기 전용) 컬렉션 구분 데이터 클래스 copy() 활용