분류 전체보기
-
[ Effective Kotlin ] Chapter 2 : ReadabilityKotlin 2024. 2. 7. 16:33
Item 11 : Design for readability'디버깅 작업으로 코드를 추적하고 읽는 시간' vs '새로운 API 로직과 구현 방법을 이해하기 위해 코드를 읽는 시간'개발자들은 위 두 가지를 비교해 보면, 프로그래밍은 코드 작성 시간보다 코드를 읽는 시간이 더 길다는 것을 알 수 있다. 따라서 코드 작성 시, 'Readability'를 고려하여 코드를 명확하게 작성하는 것이 중요하다.Reducing cognitive load'Readability'는 개발자마다 다르게 해석될 수 있다. 아래 예시를 보자.// impl Aif (person != null && person.isAdult) { view.showPerson(person)} else { view.showError()}//..
-
Kotlin - Scope function (run, with, apply, let, also)Kotlin 2024. 1. 31. 15:43
function selection 함수 객체 참조 방식 반환 값 확장 함수인지? let it 람다 블록 결과 Yes run this 람다 블록 결과 Yes run - 람다 블록 결과 No - 컨텍스트 객체 없이 사용한 경우 with this 람다 블록 결과 No - 컨텍스트 객체를 인자로 사용 apply this 객체 자신 Yes also it 객체 자신 Yes 일반적인 사용 가이드라인 let : null이 아닌 객체나 스코프 내에서 로컬 변수를 지정하여 사용할 때 사용합니다. apply : 객체를 설정할 때 사용합니다. run : 객체를 구성하고 그 결과를 계산할 때 사용됩니다. 비확장 run : 표현식 대신 여러 문장을 실행할 때 사용합니다. also : 객체를 그대로 반환하면서 추가적인 작업을 할 ..
-
[ Effective Kotlin ] Chapter 1 - SafetyKotlin 2023. 6. 9. 12:34
Item 1 : Limit mutabilityKotlin은 '불변 객체'와 '가변 객체'를 구분하여 상태를 관리할 수 있다. 이 중 '가변 객체'를 통해 상태를 관리하는 것은 양날의 검과 같다. '가변 객체'는 시간이 지남에 따라 변하는 '상태를 표현하는 것이 간편'하여 유용하다는 장점이 있지만, 다음과 같은 이유로 상태 관리가 어려워진다는 단점이 있다.상태의 변화를 추적해야 하므로 코드를 이해하고 디버그 하는 것이 어려움.상태가 언제든지 변경될 수 있기에 로직의 추론이 어려움.멀티 스레드 환경에서 동기화 메커니즘이 없는 경우, 상태의 변동성은 잠재적인 충돌을 발생함.변경 가능한 모든 상태를 테스트해야 하기에 테스트가 어려움.상태가 변경되면 상태를 사용하고 있던 요소들에게 변경 사항을 반드시 알려야 함...
-
Android Standby BucketAndroid 2022. 7. 1. 13:56
Android 9(API 28) 이상에서 앱 대기 버킷 지원 앱 대기 버킷은 최근에 사용자가 앱을 얼마나 자주 사용하였는지에 따라 앱의 리소스 요청 순위를 시스템이 지정하는데 판별함 앱 사용 패턴은 5가지 우선 순위 버킷 중 하나에 배치됨 시스템은 앱이 존재하는 버킷에 따라 각 앱에서 사용할 수 있는 기기 리소스를 제한함 Priority Bucket 시스템은 각 앱을 우선 순위 버킷에 동적으로 할당한 뒤, 필요에 따라 앱을 우선순위 버킷에 재할당을 한다. 시스템은 머신러닝을 통하여 각 앱이 사용될 가능성을 예상하여 결정하고, 머신러닝의 경우 적절한 버킷에 앱을 할당하기 위해 사전 로드된 앱을 참고할 수 있다. 현재 시스템에 로드된 앱이 없으면 시스템은 기본적으로 최근에 사용한 시간을 기준으로 앱을 정렬한..
-
Component - ServiceAndroid 2021. 10. 24. 18:15
Service 역할 Service는 Application이 Background 상태에서 계속 실행하기 위한 다목적 진입점이다. 간단히 Application이 Background에서 실행해야 하는 작업을 위한 Component라고 할 수 있다. Activity와 다르게 UI를 제공하지 않는 Component이다. 이에따라 UI가 없기에 Background에서 오랜 시간 동안 작업을 수행하거나 Remote Process를 위한 작업을 수행한다. 위 항목에 대한 내용을 풀어보자. Service는 Application이 Background 상태에서 계속 실행하기 위한 목적을 가지고 있는데 이는 다시 말해 한번 시작된 Service는 작업이 완료될때 까지 시작된 Service를 계속 실행하도록 System에게 지..
-
Component - ActivityAndroid 2021. 10. 1. 14:06
Activity 역할 사용자와 Application의 상호작용하기 위한 진입점이다. UI를 포함한 하나의 화면을 말한다. 여러 Activity가 있을 경우 서로 간 독립적이다. (이에 따라 Activity -> Activity 전환 시 데이터를 주고받을 때 별도로 코드를 추가해야 한다.) 다른 Application과 상호작용을 할 때 진입점이기도 하다. Camera App Gallery App 간의 전환 시 Intnet를 통하여 처리한다. ex(https://developer.android.com/training/basics/intents?hl=ko) System에 실행중인 Process 중 현재 사용자가 보고 있는 화면(Activity)을 Hosting 중인 Process를 계속 실행하도록 도와준다. ..
-
navigation component에서 shared transition 사용하기카테고리 없음 2021. 8. 5. 22:39
목표했던 건 RecyclerView Item -> 다음 Fragment 화면 -> 뒤로 가기 -> RecyclerView Item으로 다시 오기 이거였다... 진짜 삽질 개 많이 해따 ㅠㅠㅠ 삽질 중 발견한 것은.. 다음과 같다. RecyclerView의 Adapter Itemview 포지션이 명확해야 해당 viewHolder를 가져와 다시 돌아올 때 애니메이션을 줄 수 있음 transtionName이 양쪽이 동일해야만 애니메이션이 발생함(서로 서로를 맵핑해서 실행하는 듯함) Animation을 주려는 View들이 모두 그려진 후에 애니메이션을 호출해야 함. (실행되기는 하나 View가 깨지면서 애니메이션이 호출될 수 있음) 넘어가는(다음) 화면에 transitionName이 null일 수 있으니 체크해..