Ch.4 불변 활용하기: 안정적으로 동작하게 만들기

텐저린티·2023년 7월 14일
0
post-thumbnail

가변

  • 상태 변경할 수 있는 거

불변

  • 상태 변경 불가한 거
  • 요즘 프로그래밍 스타일 트랜드

재할당 = 파괴적 할당

  • 변수에 값을 다시 할당하는 거
  • 변수 재활용 하지 않고, 새로운 변수를 만들어 회피 가능
  • 인스턴스 변수에 final 붙이기 → 불변
  • 매개변수에 final 붙이기 → 불변

가변으로 인해 발생하는 의도하지 않은 영향

가변 인스턴스 재사용

  • 한쪽 변경이 재사용하는 다른쪽에 영향
  • 인스턴스 재사용 불가하게 개별 생성

함수로 가변 인스턴스 조작

  • 함수를 통해 인스턴스의 상태가 변경됨 → 부수효과

부수효과 단점

  • 주요작용 : 메소드가 매개변수 전달받고, 값 리턴하는 것
  • 부수효과 : 주요 작용 이외의 상태 변경 일으키는 것
  • 즉, 함수 밖에 있는 상태를 변경하는 것 → 메소드 지역변수 외 모든 상태
    • 인스턴스 변수 변경
    • 전역변수 변경
    • 매개변수 변경
    • I/O 조작

함수 영향 범위 한정

  • 데이터(상태)는 매개변수로 받기
  • 상태 변경하지 않기
  • 값은 함수 리턴값으로 전달하기

불변으로 만들어서 부수효과 막기

  • 기능 변경 때 의도하지 않은 부수효과 있는 함수 생성할 가능성 있으므로, 짜임새 있는 불변 상태 유지가 유효

불변과 가변은 어떻게 다뤄야 할까

기본적으로 불변으로

  • 변수 의미 불변 → 혼란 감소
  • 동작 안정 → 결과 예측
  • 영향 제한 → 유지 보수 용이

가변으로 설계하는 경우

  • 성능이 중요한 경우
  • 범위가 for문 처럼 작은 경우

상태 변경 메소드 설계

  • 뮤테이터 (상태 변화시키는 메소드) 에서도 불변 활용해서 상태 변경을 안정적으로 수행하도록 설계

코드 외부와 데이터 교환 국소화

  • I/O, Database, Network 등 외부와의 데이터 교환 최소화
  • 레포지토리 디자인 패턴 등 다양한 방식으로 외부와의 상호작용의 영향을 줄여야 한다.
profile
개발하고 말테야

0개의 댓글

관련 채용 정보