1. 가변성 제한하기

객체가 상태를 가지는데, 변할수있는 상태라면 주의 기울여서 프로그래밍 해야한다.

시간에 따라 변할 수 있는 상태를 갖는다는 것

  1. 유지보수 및 디버깅 어려움
  2. 코드 실행 추론 어려움
  3. 멀티 스레드 환경에서 동기화 필요
  4. 다양한 상태로 인해 테스트 어려움
  5. 상태 변경 시 다른 부분도 함께 변경해야 하는 경우가 있을 수 있음.
    1. 정렬된 리스트 요소에 상태가 변경되면, 새롭게 정렬해야함

코틀린에서 가변성 제한하기