1. 가변성 제한하기
객체가 상태를 가지는데, 변할수있는 상태라면 주의 기울여서 프로그래밍 해야한다.
시간에 따라 변할 수 있는 상태를 갖는다는 것
- 유지보수 및 디버깅 어려움
- 코드 실행 추론 어려움
- 멀티 스레드 환경에서 동기화 필요
- 다양한 상태로 인해 테스트 어려움
- 상태 변경 시 다른 부분도 함께 변경해야 하는 경우가 있을 수 있음.
- 정렬된 리스트 요소에 상태가 변경되면, 새롭게 정렬해야함
코틀린에서 가변성 제한하기
- val
- 가변 컬렉션과 읽기 전용 컬렉션
- 데이터 클래스의 copy