Language
언어
Kotlin, Dart, Java, Swift 문법과 활용 정리.
Kotlin
디자인 패턴 정리: GoF 의 세 갈래와 Builder, Factory, Adapter, Decorator 를 Kotlin 으로 다시 보기
GoF 책의 23개 패턴 분류, Builder·Factory Method·Abstract Factory·Adapter·Decorator 의 의도와 구조, AlertDialog.Builder·ViewModelProvider.Factory·RecyclerView.Adapter·java.io 데코레이터 같은 실제 API, 기본 인자·apply·companion object·클래스 위임이 바꾸는 지점, Singleton·Strategy·Observer·Facade 와 과한 패턴 적용의 함정을 정리합니다.
Kotlin
Effective Kotlin 정리 4편: 비용 줄이기와 컬렉션 처리 효율 (Item 45~52)
Effective Kotlin 7장과 8장을 정리했습니다. 박싱과 불필요한 객체 생성, inline 과 value class, 오래된 참조, Sequence 와 Iterable 의 처리 순서 차이, 연산 수 줄이기, 기본형 배열과 가변 컬렉션까지 8개 항목입니다.
Kotlin
Effective Kotlin 정리 3편: 객체 생성과 클래스 설계 (Item 33~44)
Effective Kotlin 5장과 6장을 정리했습니다. 팩토리 함수, 기본 인자와 DSL, 상속 대신 합성, data class 와 sealed 클래스, equals/hashCode/compareTo 계약, 확장 함수와 멤버 확장의 선택까지 12개 항목입니다.
Kotlin
Effective Kotlin 정리 2편: 재사용성과 추상화 설계 (Item 19~32)
Effective Kotlin 3장과 4장을 정리했습니다. 반복해도 되는 코드와 안 되는 코드의 기준, 프로퍼티 위임, 제네릭과 변성(out/in), 추상 수준, SemVer, 외부 API 래핑, 가시성과 KDoc 계약까지 14개 항목입니다.
Kotlin
Kotlin Flow 정리: cold 와 hot, 연산자, StateFlow 와 SharedFlow, Android 에서의 수집
cold Flow 의 실행 시점과 빌더, 중간·종단 연산자, 컨텍스트 보존과 flowOn, buffer·conflate·collectLatest, catch·onCompletion, hot 인 StateFlow·SharedFlow 와 stateIn·shareIn, repeatOnLifecycle 과 collectAsStateWithLifecycle 을 실행 결과와 애니메이션으로 확인합니다.
Dart
freezed 3.0 이 생성하는 코드와 build_runner 흐름
freezed 가 불변 클래스에 만들어 주는 ==, hashCode, toString, copyWith(깊은 copyWith 포함), sealed union 과 json_serializable 연동을 코드 생성 흐름과 함께 설명하고 3.0 에서 바뀐 선언 형식과 when/map 제거를 다룹니다.
Kotlin
Effective Kotlin 정리 1편: 안전성과 가독성 (Item 1~18)
Marcin Moskała 의 Effective Kotlin 1장과 2장을 정리했습니다. 가변성과 스코프, 플랫폼 타입, require/check, null 과 Failure, use, 연산자 오버로딩, 프로퍼티와 함수의 구분까지 18개 항목을 짧은 예제와 함께 훑습니다.
Kotlin
suspend 함수는 어떻게 스레드를 막지 않고 멈출까: CPS 변환과 상태 머신
suspend 함수가 컴파일될 때 Continuation 파라미터가 추가되고 반환 타입이 Any? 로 바뀌는 CPS 변환, COROUTINE_SUSPENDED 와 label 기반 상태 머신, 재개 흐름을 디컴파일 결과와 애니메이션으로 따라가고 Dispatcher 와 구조적 동시성까지 짚습니다.
Dart
Dart 3 class modifier 와 sealed, 완전성 검사로 닫는 타입 계층
Dart 3 의 class modifier(abstract, base, interface, final, sealed, mixin class)가 각각 무엇을 막는지 표로 정리하고 sealed 와 switch 표현식·패턴·records 를 조합해 완전성 검사를 받는 방법과 Kotlin sealed 와의 차이를 설명합니다.
Java
Java 21 가상 스레드, 플랫폼 스레드와 carrier 의 관계 (JEP 444)
JDK 21 에서 정식 기능이 된 가상 스레드가 플랫폼 스레드와 어떻게 다른지, carrier 스레드에 mount/unmount 되는 과정과 pinning, 풀링 금지, ThreadLocal 주의점, 어울리는 작업의 범위를 정리하고 Kotlin 코루틴과 비교합니다.
Dart
Dart sound null safety, 타입에 null 여부를 담는 방식
Dart 의 sound null safety 가 타입 계층을 어떻게 바꿨는지, ?, !, ??, late, required 의 의미와 flow analysis 에 의한 타입 승격, 필드 승격의 제약(Dart 3.2 의 private final 필드 승격)을 정리합니다.
Kotlin
Kotlin sealed class 와 sealed interface, when 이 누락을 잡아 주는 이유
sealed class 와 sealed interface 의 하위 타입 제약, when 의 완전성 검사가 동작하는 조건, enum 과의 차이, UiState 와 Outcome 모델링, data object 사용법을 컴파일 오류와 함께 확인합니다.
Kotlin
Kotlin 제네릭과 Java 제네릭, 변성을 쓰는 위치가 다릅니다
Java 의 사용 지점 와일드카드(? extends, ? super)와 Kotlin 의 선언 지점 변성(out, in)을 PECS 와 대응해 비교하고 타입 프로젝션, 스타 프로젝션과 raw type, inline 과 reified, where 제약, List 와 MutableList 의 차이를 실행 결과와 함께 다룹니다.
Kotlin
Kotlin 은 왜 클래스 다중 상속을 막고 인터페이스로 풀었을까
다이아몬드 문제가 생기는 구조와 Kotlin 이 클래스는 하나만 상속하고 인터페이스는 여러 개 구현하게 한 방식, 기본 메서드가 충돌할 때 super<A>.foo() 로 해결하는 법, 위임(by)으로 기능을 조합하는 방법을 코드로 확인합니다.
Kotlin
Kotlin data class 가 만들어 주는 멤버와 만들지 않는 것
data class 가 주 생성자 프로퍼티로 생성하는 equals, hashCode, toString, componentN, copy 를 그림과 실행 결과로 확인하고 얕은 복사, 상속 제약, 구조 분해, 불변 권장 이유, @JvmRecord 까지 다룹니다.