Developing Myself Everyday
아이템 1 - "가변성을 제한하라"

상태(state)var을 사용하거나 mutable 객체를 사용하면 값이 변동될 여지가 생기게 됩니다. 이를 상태(state)라고 합니다. 상태를 가지게 되는 경우, 이제는 객체의 사용 방법뿐만이 아니라 객체의 상태에 대한 이력(history)에 의존하게 됩니다. 그렇기에 코틀린에서는 주로 3가지 방법을 사용해서 가변성을 제한합니다.val (읽기 전용 프로퍼티)가변 컬렉션과 읽기 전용 컬렉션 구분하기데이터 클래스의 copy  valval을 사용해 읽기 전용 프로퍼티를 만들 수 있습니다. 다만 이러한 val의 값이 항상 변하지 않는다는 말은 아닙니다. val이 mutable 하거나 getter를 정의해서 다른 변경 가능한 프로퍼티를 참조한다면, val 값도 변할 수 있습니다. 아래의 예시에서 person은 ..

article thumbnail
ViewModel 톺아보기 (1) - ViewModel의 생성과 관리
Android/Compose 2024. 11. 18. 20:51

사진: Unsplash의April Walker   안드로이드 개발을 할 때, ViewModel을 사용하는 것은 이제 옵션이 아닌 필수일 정도로 ViewModel을 사용하는 것은 매우 당연해 졌습니다. 시간이 지나며 새로운 기술일이 나오게 되면서, 이에 대응하여 ViewModel의 사용 방법은 우리가 눈치채지도 못하게 자연스럽게 바뀌었습니다. 그러면서 모르고 지나갔던 부분들을 톺아보고자 이번 게시글에서는 ViewModel을 어떻게 사용하고 있는지 살펴보고자 합니다. 이 게시글은 3가지의 시리즈로 구성되어 있습니다. (1) - ViewModel의 생성과 관리 [현재 게시글](2) - Hilt와 함께 ViewModel 가져오기(3) - ViewModel과 SaveStateHandle    ViewModel의 ..

article thumbnail
Kotlin에서의 함수 컬러링이란? suspend와 composable 함수
Android/Kotlin 2024. 10. 15. 20:39

사진: Unsplash의Robert Katzki  Compose에 대해 공부를 하다 보니 함수 컬러링이란 개념에 대해 알게 되었습니다. 이번 게시글에서는 함수 컬러링에 대해 알아보고자 합니다.   함수의 색상겉으로 표시되고 있지는 않지만 모든 함수에는 색상이 존재합니다. 우리는 특정 조건을 통해 함수의 색상을 지정할 수 있습니다. 아래와 같이 빨간색과 파란색 함수가 존재한다고 가정해 보겠습니다.fun red() {}fun blue() { }  이런 여러가지의 함수들에 존재하는 단 하나의 규칙은 '파란색 함수는 어디에서든 호출할 수 있지만, 빨간색 함수는 빨간색 함수 안에서만 호출할 수 있다.` 다는 것입니다.fun red2() { red() blue()}fun blue2() { red..

article thumbnail
SavedStateHandle을 통해 Compose Navigation간 데이터 전달하기
Android/Compose 2024. 9. 23. 17:47

사진: Unsplash의Pawel Czerwinski 이 게시글은 Type-Safe Compose Navigation을 사용하고 있다는 것을 전제합니다. 만약 아직 Migration을 하지 않으셨다면 아래의 게시글을 통해 진행해 보세요! Type Safety를 지원하는 Compose Navigation으로 이전하기사진: Unsplash의Dan Chung  드디어 Compose Navigation에서 Type Safety를 지원합니다! 이전에 Compose를 해보지 않으셨다면 모르시겠지만, 이전의 Compose Navigation을 해보셨다면 해당 방식이 마음에 안드셨던everyday-develop-myself.tistory.com   Compose Navigation을 사용하면서 화면 이동간 데이터를 전..

article thumbnail
KAPT, KSP 그리고 어노테이션
Android/Kotlin 2024. 9. 11. 15:26

사진: Unsplash의Noah Buscher  안드로이드 스튜디오에서 코틀린으로 개발을 하다 보면, KAPT나 KSP 플러그인을 추가해야 하는 상황이 생깁니다. 무의식적으로 일단 하라고 하니까, 해왔긴 한데 이게 뭔지 제대로 알아본 적이 없는 거 같아 이번 게시글에서 공부해보고자 합니다.   먼저 어노테이션이란?KAPT, KSP에 대해 이야기하기 전에 먼저 어노테이션에 대해 이해하고 있어야 합니다. 어노테이션의 한국뜻은 `주석`으로 우리가 코드에 대한 설명을 주석을 통해 붙이듯 코드에 부가적인 정보를 제공하는 역할을 합니다. 부가적인 정보는 메티데이터의 형태로 제공되며 컴파일러나 런타임 환경에서 해석될 수 있습니다. 어노테이션하면 가장 먼저 `@Override`가 떠오르실 것 같습니다. 이 어노테이션은..

article thumbnail
안드로이드 멀티 모듈에서 의존성 항목 추가하기 api vs implementation
Android 2024. 8. 25. 17:28

사진: Unsplash의Kai Damm-Jonas  안드로이드 개발을 하면서 특정 라이브러리를 사용하거나, 다른 모듈에 필요한 것들이 있다면 그것들에 대해 의존성을 가지게 되고 필요한 곳에서 의존성 항목으로 추가하여야 합니다. 저는 개발을 하면서 필요한 의존성을 아무 생각 없이 주입해 왔는데, 이를 주입해 주는 메서드가 흔히 사용되는 `implementation` 뿐만이 아니라 다른 것들이 있다는 것을 알게 되었습니다. 그래서 이번 게시글에서는 각각의 메서드들에 대해 알아보고, 이들을 어떻게 사용하는 것이 좋은지 공부해보고자 합니다.     의존성 구성 방식 - implmentation vs api안드로이드에서 의존성을 추가하기 위해서는 `dependencies` block 안에서 작성하여야 합니다. 이..

article thumbnail
Type Safety를 지원하는 Compose Navigation으로 이전하기
Android/Compose 2024. 7. 9. 15:26

사진: Unsplash의Dan Chung  드디어 Compose Navigation에서 Type Safety를 지원합니다! 이전에 Compose를 해보지 않으셨다면 모르시겠지만, 이전의 Compose Navigation을 해보셨다면 해당 방식이 마음에 안드셨던 분들이 많았을 겁니다.  불만이 많으셨던 분들을 위해 Type Safety Compose Navigation에 대해 간략히 살펴보고 제가 작성한 코드를 마이그레이션 해보고자 합니다. 필요한 Gradle은 아래와 같습니다.[versions]...kotlinxSerializationJson = "1.6.3"kotlinxSerialization = "1.9.0"navigationCompose = "2.8.0-alpha08" [libraries]...a..

article thumbnail
Compose의 WindowInsets
Android/Compose 2024. 4. 23. 19:18

사진: Unsplash의R Mo 이번 게시글에서는 Compose에서 어떻게 WindowInsets에 대응하는지 아래의 공식문서로 공부해보고자 합니다. Compose의 창 인셋 | Jetpack Compose | Android Developers 이 페이지는 Cloud Translation API를 통해 번역되었습니다. Compose의 창 인셋 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Android 플랫폼은 상태 표시줄 및 탐색 developer.android.com WindowInsets? `WindowInsets`에 대해서 잘 알지 못하는 분들을 위해 먼저 설명해 보겠습니다. WindowInsets은 `Window`와 `Insets`으로 나눠 설명하면 매우 쉽게 이..