1-안정성
가변성을 제한하라 상태를 구현하는 방법 var 프로퍼티 사용 mutable 객체 사용 (MutableList, MutableSet 등) 상태를 가질 때 문제점 상태를 추적해야되기 때문에, 프로그램을 이해하고 디버그하기 힘들어진다. 시점에 따라서 값이 달라질 수 있으므로, 코드의 실행을 추론하기 어려워진다. 멀티스레드 프로그램일 때는 적절한 동기화가 필요하다. 모든 상태를 테스트해야 하므로, 테스트하기 어렵다. 상태 변경이 일어날 때, 이러한 변경을 다른 부분에 알려야 하는 경우가 있다. 코루틴: 프로그램의 실행 흐름을 일시적으로 중단하고, 나중에 중단한 시점부터 실행을 재개할 수 있는 멀티 태스킹 기법....