하루플스토리
Home
  • 전체보기 (252)
    • 개발 (103)
      • Android (67)
      • IOS (1)
      • 코딩테스트 (34)
      • 딥러닝 (1)
    • 블로그 (9)
      • 공지사항 (4)
      • 이슈, 유머 (5)
    • 일상 (17)
      • 일상 (9)
      • 전자제품 (7)
      • 사진 (1)
    • 메이플 (120)
      • 메이플스토리 (120)
Home
  • 전체보기 (252)
    • 개발 (103)
      • Android (67)
      • IOS (1)
      • 코딩테스트 (34)
      • 딥러닝 (1)
    • 블로그 (9)
      • 공지사항 (4)
      • 이슈, 유머 (5)
    • 일상 (17)
      • 일상 (9)
      • 전자제품 (7)
      • 사진 (1)
    • 메이플 (120)
      • 메이플스토리 (120)
블로그 내 검색
Github

하루플스토리

안드로이드 개발자 하루플 입니다 GitHub 놀러와주세요!😊

  • 개발/Android

    이펙티브 코틀린 : 1부 좋은 코드

    2023. 2. 6.

    by. 하루플스토리

    반응형

    가변성을 제한하라

    • 코틀린은 모듈(클래스, 객체, 함수, 타입별칭, 톱레벨 프로퍼티 등)로 프로그램을 설계한다.
    • 상태 변경이 많아지면 추적하는 것이 힘들어진다.
    • var 가변성이 있으면 코드의 실행을 추론하기 어려워진다.
    • 변경이 많으면 더 많은 조합을 테스트 해야한다.
    • 그러므로 변할 수 있는 지점은 줄일수록 좋다.

     

    • 코틀린은 읽기전용 프로퍼티 val을 사용해 가변성을 제한할 수 있다.
    • 다만, mutable 객체라면 내부적으로 변할 수 있다.
    • val 이 읽기전용 프로퍼티이지만 불변(immutable)을 의미하진 않는다.
    • 완전히 변경할 필요가 없는 변수라면 final을 활용하자.

     

    • 읽기 전용 : Iterable, Collection, Set, List
    • 읽기쓰기 : MutableIterable, MutableCollection, MutableSet, MutableList
    • 읽기 전용에서 mutable로 변경해야 한다면, 복제(copy)를 통해서 새로운 mutable 컬렉션을 만드는 list.toMutableList를 활용해야한다.

     

    • Delegates.observable을 사용하면 변경이 있을 때 감지할 수 있다.
    • var list = mutableList<Int>() 이렇게 두 지점에 모두 가변성을 주는건 좋지 않다. 두 지점에 대한 동기화를 모두 구현해야하고, 모호성이 발생해 +-를 사용할 수 없다.
    • 상태를 나타내는 mutable 객체를 외부에 노출하는 것은 위험하다.
    반응형
    저작자표시 비영리 동일조건 (새창열림)

    '개발 > Android' 카테고리의 다른 글

    이펙티브 코틀린 : 예외를 활용해 코드에 제한을 걸어라  (0) 2023.02.19
    이펙티브 코틀린 : 변수의 스코프를 최소화하라  (0) 2023.02.18
    [Android] 카카오 로그인을 구현하면서 경험한 시행착오  (0) 2023.01.29
    [Android] CollapsingToolbarLayout, ViewPager2를 함께 사용시 스크롤 이슈 해결방법  (0) 2023.01.19
    [Android | Kotlin] Bottom Sheet Dialog 개발하기  (0) 2023.01.17

    댓글

    관련글

    • 이펙티브 코틀린 : 예외를 활용해 코드에 제한을 걸어라 2023.02.19
    • 이펙티브 코틀린 : 변수의 스코프를 최소화하라 2023.02.18
    • [Android] 카카오 로그인을 구현하면서 경험한 시행착오 2023.01.29
    • [Android] CollapsingToolbarLayout, ViewPager2를 함께 사용시 스크롤 이슈 해결방법 2023.01.19
    맨 위로
전체 글 보기
Tistory 로그인
Tistory 로그아웃
로그아웃 글쓰기 관리

Today

Total

Powered by ⓒ Kakao Corp.

Designed by Nana
블로그 이미지
하루플스토리

티스토리툴바