분류 전체보기
-
[CodeReadability] 8장 Code Reivewkotlin/[Book] Code Readability 2025. 11. 9. 16:13
Objective코드 리뷰(Code Review)를 통해 코드의 가독성, 품질, 생산성을 높인다.코드 자체만이 아니라 “리뷰 과정” 또한 효율적이고 협력적으로 설계해야 한다.Key Results[KR1] 리뷰 요청자는 리뷰하기 쉬운 Pull Request(PR)을 만든다.[KR2] 리뷰 수행자는 코드를 “비판”이 아닌 “협업”의 관점에서 검토한다.[KR3] 리뷰의 핵심은 “변경의 의도와 책임 범위”를 명확히 하는 것이다.[KR4] PR의 크기와 구조를 조절해 리뷰 생산성을 높인다.[KR5] 리뷰 코멘트의 목적은 코드 품질 향상이 아니라 지속 가능한 팀 협업이다.Part 1. 리뷰의 필요성과 본질개념코드 리뷰는 단순히 오류를 찾는 과정이 아니라,가독성(Readability)논리적 정확성(Logic corr..
-
Actor의 생명주기 (공유 자원은 언제까지 살아있는가?)kotlin/coroutine 2025. 11. 9. 15:41
Actor의 내부에서 관리하는 공유 자원(lifecycle-managed resource) 은 “Actor 코루틴의 생명주기(lifecycle)”에 종속적으로 존재합니다.Actor의 생명주기가 곧 그 내부 상태(State)와 자원의 생명주기다.1️⃣ Actor의 생명주기(Lifecycle)란?Kotlin에서 Actor는 CoroutineScope.actor 로 생성되죠.fun CoroutineScope.counterActor() = actor { var count = 0 // 내부 상태 for (msg in channel) { when (msg) { is Inc -> count++ is Get -> msg.response.complete(c..
-
Actor 모델을 통한 동시성 문제 해결kotlin/coroutine 2025. 11. 9. 15:35
1️⃣ Actor 모델의 본질개념 요약Actor = 독립된 코루틴 + 메시지 큐(Channel)외부에서는 actor.send(Message) 로만 상호작용 가능내부 상태는 오직 해당 Actor 코루틴 안에서만 수정 가능즉, 여러 스레드가 동시에 Actor의 내부 상태를 건드릴 수 없습니다.→ 이게 Actor가 race condition을 구조적으로 줄이는 핵심 원리입니다.2️⃣ 일반적인 race condition 예시일반 코드 (shared mutable state)var counter = 0fun main() = runBlocking { val jobs = List(1000) { launch { repeat(1000) { counter++ } // race 발생 가..
-
비동기 의존 완화 (Asynchronous Dependency Mitigation) 가이드kotlin/coroutine 2025. 11. 9. 15:07
Objective비동기 로직에서 발생하는 양방향 의존성(circular dependency) 을 제거하고, caller → callee 단방향 구조로 유지한다.즉, “콜백 기반 제어”를 “결과 반환 기반 구조”로 전환함으로써 테스트 가능한 단방향 의존 설계를 실현한다.Key Results[KR1] 콜백 기반 구조에서 caller와 callee 간의 순환 참조를 제거한다.[KR2] Promise / Future / Coroutine / Actor / async-await 같은비동기 패턴을 활용해 단방향 데이터 흐름을 만든다.[KR3] 비동기 결과를 반환값(return value) 으로 표현한다.[KR4] 모든 비동기 함수는 “caller는 관찰자, callee는 수행자” 역할로 명확히 분리한다.[KR5] ..
-
[Code Readability] 7장 Dependency (의존성의 가독성 설계)kotlin/[Book] Code Readability 2025. 11. 9. 13:15
Objective코드의 가독성을 해치는 가장 큰 요인은 “불투명한 의존성” 이다.좋은 코드란 “무엇이 무엇에 의존하는지”를 한눈에 알 수 있어야 한다.이를 위해 결합도(coupling)를 줄이고, 방향(direction)을 정하며, 중복(redundancy)을 없애고, 명시성(explicitness)을 높인다.Key Results[KR1] 의존성은 가능한 한 비순환(acyclic) 구조로 유지한다.[KR2] 강결합(content/common/control coupling) 을 피하고, 데이터 중심 결합(data coupling) 을 선호한다.[KR3] caller → callee, concrete → abstract, complex → simple 방향을 지킨다.[KR4] 중복된 의존성 관계를 제거해, ..
-
[Code Readability] 5장 읽기 쉬운 함수(function)kotlin/[Book] Code Readability 2025. 11. 9. 12:07
Objective**“읽기 쉬운 함수(Readability)”**란,이름만 봐도 동작을 예측할 수 있고,한 번 훑기만 해도 전체 흐름이 보이는 함수를 말한다.이 문서는 함수의 책임, 흐름, 구조화 원칙을 통해 이를 달성하는 방법을 설명한다.Key Results[KR1] 한 문장으로 요약되지 않는 함수는 반드시 분리한다.[KR2] Command와 Query는 분리하여 예측 가능한 동작을 보장한다.[KR3] 중첩 호출이나 체이닝을 줄이고, 의미 있는 이름으로 정의 기반 프로그래밍(Definition-based Programming) 을 수행한다.[KR4] Happy Path 중심 구조로 설계하여, 비정상 케이스를 초기에 걸러낸다.[KR5] 조건이 아닌 객체(Object) 를 기준으로 분기와 책임을 분리한다...
-
[Code Readability] 3장 코드 가독성을 높이는 주석(Comment) 작성 원칙kotlin/[Book] Code Readability 2025. 11. 9. 10:33
Objective코드의 가독성(Readability) 과 유지보수성(Maintainability) 을 높이기 위해 주석(Comment)을 의미 있게, 필요한 곳에만, 명확하게 작성하는 원칙을 이해하고 실천한다.Key Results[KR1] 코드 자체로 설명 가능한 경우, 주석을 생략한다.[KR2] 주석은 “무엇을 하는가(What)”보다 “왜 이렇게 하는가(Why)”에 집중한다.[KR3] 주석의 종류(Documentation / Informal / TODO 등)에 따라 목적과 사용 위치를 구분한다.[KR4] 불필요한 주석을 없애기 위해 코드 리팩토링을 적극적으로 수행한다.[KR5] 주석이 코드의 “행동”이 아닌 “의도”를 설명하도록 작성한다.Part 1. 주석의 개념과 목적개념주석(Comment)은 코드 ..
-
[Code Readability] 4장 상태(State)kotlin/[Book] Code Readability 2025. 11. 9. 10:16
Objective코드의 가독성과 안정성을 향상시키기 위해, 상태(State)와 변수 관계를 명확히 설계하고 유지한다.Key Results변수 간 관계를 독립적(orthogonal)으로 유지한다.불변성(immutability)과 멱등성(idempotence)을 통해 상태 전이의 일관성을 확보한다.순환적(cyclic) 상태는 최소화하고, 가능한 한 비순환(acyclic) 구조를 유지한다.KR1. 변수 간 관계 관리 (Relationship between Variables)문제서로 종속적인 변수가 존재하면 잘못된 상태(illegal state)가 발생할 수 있다.class CoinState(val coinCount: Int, val coinText: String)// 잘못된 상태 가능val state = Co..