코드 품질 개선 기법 22편: To equal, or not to equal
`equals`를 일부 속성만으로 정의하면 예상치 못한 버그가 생길 수 있음을 설명했습니다. 동일성인지 등가성인지 목적을 먼저 정하고, 필요한 부분은 별도 함수로 분리해야 합니다.

Flow 태그가 달린 국내 IT 기업 기술 블로그 글을 최신순으로 모았습니다.
7개 표시
`equals`를 일부 속성만으로 정의하면 예상치 못한 버그가 생길 수 있음을 설명했습니다. 동일성인지 등가성인지 목적을 먼저 정하고, 필요한 부분은 별도 함수로 분리해야 합니다.

Kotlin Flow를 단방향 데이터 스트림 관점에서 활용해 Android 화면 상태 관리를 단순화한 사례를 설명했습니다. shareIn, merge, combine, flatMapLatest의 사용 기준과 주의점을 정리했습니다.

ViewModel의 1회성 이벤트 전파에 쓰던 EventFlow를 Channel로 바꾸는 방법을 정리했습니다. 구독자 부재와 재수집 상황을 고려해 receiveAsFlow()와 Channel.BUFFERED 사용 이유도 설명했습니다.

Spring Batch의 Flow Controller로 Step 실행 순서와 분기 방법을 설명했습니다. next, on, from, stop을 이용해 조건별 배치 흐름을 구성하는 방법을 정리했습니다.
![[SpringBatch 연재 10] 스프링배치 플로우 컨트롤 하기](https://devocean.sk.com/thumnail/2024/11/29/20eb6934476f3b2a7a750153647d9f049eb9df33462a0b597ee5acfb5d95cf82.png)
옵저버 패턴의 개념과 동작 메커니즘을 유튜브 구독 예시로 설명했습니다. 또한 Coroutine과 Flow로 이를 더 간결하고 유연하게 구현하는 방법을 다뤘습니다.

Kotlin Flow와 StateFlow를 도입한 경험을 바탕으로 LiveData의 한계와 대체 가능성을 정리했습니다. 클린 아키텍처와 생명주기 대응 관점에서 Flow 활용 방법도 살펴봤습니다.
Android에서 기존 LiveData를 Flow 계열로 옮겨 적용한 경험을 소개하는 글입니다. StateFlow와 SharedFlow를 설명하기 위해 먼저 LiveData의 개념을 정리합니다.