[개발일기] 22-06-13

오늘·2022년 6월 13일
0

[개발일기]

목록 보기
51/199

📝 간단하게 쓰는 개발일기

함수형 코틀린

3장을 마무리했다.

3장의 마지막 내용은 불변성의 장점과 단점에 대한 내용이었다. 이 부분의 예제 코드에서 Coroutine을 사용한 부분이 나왔는데, 현재 Kotlin 버전과는 맞지 않는 문법인 것 같아서 찾아보고 적용시켰다. 다만 아직 Coroutine에 대한 이해가 많이 부족해서, 책의 후반부에 나오는 Coroutine에 대한 내용과 함께 지금 버전에 맞는 사용법을 추가로 공부해야 할 것 같다.

정리

  • 불변성의 장점

    • 스레드 안전성
      여러 스레드에서 동시에 같은 데이터에 접근할 때, 전통적인 방식에서는 잠금-해제와 동기화 같은 것을 이용해서 스레드 안전성을 보장해야 한다. 하지만 불변성을 이용하면 간단히 이것을 해결할 수 있다.

    • 낮은 커플링
      스레드 사이의 의존성을 커플링이라고 한다. 불변성을 이용할 때 각 스레드가 같은 데이터에 처음 접근한 이후에는 다른 변수를 통해 동작하기 때문에 커플링이 낮다.

    • 참조 투명성
      표현식이 항상 같은 결과를 내놓는 것으로 불변성과 순수 함수를 통해 구현될 수 있다.

    • 실패 원자성
      커플링이 낮기 때문에 하나의 스레드가 실패하더라도 다른 스레드에 영향을 미칠 확률이 적다.

    • 캐싱
      오브젝트가 변하지 않으므로 캐싱을 사용해서 성능을 향상시킬 수 있다.

    • 컴파일러 최적화
      변하지 않는 오브젝트로 인해 컴파일러를 최적화하기 쉽다.

    • 순수 함수
      불변성을 이용해서 순수 함수가 구현될 수 있다.

  • 불변성의 단점

    • 불변성을 사용하기 위해 새로운 오브젝트가 생성되어야 한다.(불변 변수를 복사해서 사용하는 것 등)
    • 이것은 오브젝트가 많은 상황에서는 문제가 되지만 모든 상황이 그런 것은 아니다.
profile
Junior Mobile 개발자

0개의 댓글