전체 글
-
[ Effective Kotlin ] Chapter 4 : Abstraction DesignKotlin 2024. 2. 29. 23:17
추상화는 프로그래밍 세계에서 매우 중요한 개념이며, OOP에서 추상화가 캡슐화와 상속과 함께 3대 핵심 개념 중 하나로 여겨진다. 함수형 프로그래밍에서는 프로그래밍 작업 전체를 추상화와 구성으로 보는 관점이 일반적이다. 추상화는 일반화 과정이나 결과로써, 특성을 제거하거나 아이디어를 객체로부터 멀어지게 하는 것이다. 즉, 추상화는 복잡성을 숨기는 단순화의 한 형태로, 프로그래밍에서 기본적인 예로 인터페이스를 들 수 있다. 인터페이스는 클래스의 일부 특성만을 나타내기에 클래스의 추상화로 볼 수 있다. 구체적으로는 메서드와 프로퍼티의 집합을 의미한다.Item 26 : Each function should be written in terms of a single level of abstraction잘 분리된 ..
-
Android Compose - Composable Component API GuidelineAndroid 2024. 2. 29. 20:40
다음의 글을 안드로이드 개발자 입장에서 생각하면서 번역했습니다. 본문과 다를 수 있습니다. API Guidelines for components in Jetpack ComposeAPI Guidelines for @Composable components in Jetpack Compose Last updated: July 19, 2023 Set of guidelines and recommendations for building scalable and user-friendly @Composable components. The requirement level of each of these guidelines is specified usandroid.googlesource.comBefore you create a..
-
Android Compose - API GuideLineAndroid 2024. 2. 28. 22:34
다음의 글을 안드로이드 개발자 입장에서 생각하면서 번역했습니다. 본문과 다를 수 있습니다. API Guidelines for Jetpack ComposeAPI Guidelines for Jetpack Compose Last updated: March 10, 2021 Who this document is for The Compose API guidelines outline the patterns, best practices and prescriptive style guidelines for writing idiomatic Jetpack Compose APIs. As Jetpack Compose code iandroid.googlesource.comKotlin StyleBaseline style guidel..
-
[Effective Kotlin] Chapter 3 - ReusabilityKotlin 2024. 2. 22. 17:20
Item 19 : Do not repeat knowledge프로그래밍에서 'knowledge'를 표현하면 다음과 같다.의도적으로 생성된 모든 '정보 조각'을 의미하며, 코드 또는 데이터로 표현된다.코드 또는 데이터가 없는 경우에는, 기본 동작을 사용하고 싶다는 의미로 나타낼 수 있다.e.g : 상속을 받고 메서드를 'override' 하지 않을 때, 해당 메서드가 상위 클래스와 동일하게 동작하기를 원하는것으로 나타낼 수 있다.소프트웨어에서 'knowledge'는 '알고리즘', 'UI 디자인' 등이 될 수 있으며, 다음과 같은 방식으로 표현될 수 있다.코드 : 가장 직접적인 표현 방식, 함수•클래스•변수 등을 통해 구체적인 동작과 로직을 표현구성 : 앱의 동작 환경을 정의하는 방식, 런타임에 프로그램의 행..
-
[ 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 시스템은 각 앱을 우선 순위 버킷에 동적으로 할당한 뒤, 필요에 따라 앱을 우선순위 버킷에 재할당을 한다. 시스템은 머신러닝을 통하여 각 앱이 사용될 가능성을 예상하여 결정하고, 머신러닝의 경우 적절한 버킷에 앱을 할당하기 위해 사전 로드된 앱을 참고할 수 있다. 현재 시스템에 로드된 앱이 없으면 시스템은 기본적으로 최근에 사용한 시간을 기준으로 앱을 정렬한..