일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Compose
- 책
- 알게되는
- 자바
- 테스트
- 병럴프로그래밍
- 코루틴
- 회고
- Kotlin
- mockito
- viewmodel
- g 단위테스트
- ReactiveProgramming
- Gradle
- android
- 스레드
- 안드로이드스튜디오
- Rxjava
- k8s
- kotlin강좌
- 병렬프로그래밍
- Coroutine
- 코틀린
- 디자인패턴
- 안드로이드
- 커스텀상태
- 알고리즘
- theming
- 글또
- 안드로이드강좌
- Today
- Total
목록일상 (61)
선생님, 개발을 잘하고 싶어요.
단순히 코드 재사용을 위한 상속에 서브클래싱이라는 이름을 붙히고 타입 계층을 만들기 위해서 사용하는 상속에 서브타이핑이라는 이름이 있다는 사실을 알게된 챕터입니다. 이런 구분을 알게 되니까 LSP의 진정한 의미에 대해서 조금은 알게된 것 같습니다. 원래는 “당연히 부모 타입에 자식 타입 인스턴스를 넣고 사용할 수 있는데 뭔 소리야?”라고 생각하고 대수롭지 않게 여긴 설계 원칙이였는데요. 이번 챕터를 통해서 객체 지향 설계의 정수가 아닌가? 라는 생각이 들게 되었습니다. 우선 LSP와 다형성의 관계가 매우 재밌었습니다. 객체 지향을 처음 배울 때 부터 우리는 다형성에 대해서 배웠습니다만 다형성을 단순히 Overloading 정도로 생각하고 있었던 것 같아요. 타입이라는 개념으로 역할을 정의하고, 코드를 O..
다형성을 달성하게 만든 동적 바인딩에 대해서 탈탈 턴 챕터입니다. 클라이언트가 보낸 메시지가 실제로 런타임에 어떻게 구체 클래스의 메서드를 실행하게 되는지 상속의 관점에서 잘 설명돼있습니다. 여기서 더 나아가서 상속은 이러한 동적 바인딩을 위한 경로 정의에 방법일 뿐이라는 이야기와 함께 경로 정의를 컴파일 타임 상속으로 처리한 게 아니라 런타임 객체간 체이닝으로 처리한 자바스크립트의 prototype의 예시를 들어주는 데 엄청 신기했습니다. 그런 식으로 실제 실행 시점 메서드를 결정한다는 메커니즘에서 합성이 어떻게 상속의 대체가 되는지 설명하는 부분까지 완벽했다고 생각합니다. 도입 상속 이외에도 다형성을 구현할 수 있는 방법은 많다. 다형성은 런타임에 메시지를 처리하기에 적합한 메서드를 동적으로 탐색하는..
상속의 문제점을 지적하며 합성의 장점을 설명하는 챕터입니다. 조합의 폭발적인 증가는 실제로 경험해 본 적이 없지만 부주의하게 상속을 사용하는 경우 당연히 발생할 것 같습니다. (실제로 경험 안해보는 게 정신 건강에 좋을 것 같네요.) 합성을 사용하는 게 컴파일타임 의존성과 런타임 의존성을 다르게 설정할 수 있는 방법이라는 걸 알게되었습니다. 지금까지 저자가 강조했던 것 처럼 유연한 설계를 위해서는 이 둘의 차이가 있어야 한다고 했던 지점과 일치하는 듯 하네요. 하지만 결국 합성만이 만능키라는 게 아니고 상속이 가지고 있는 문제 (컴파일타임에 의존성을 런타임에 못 바꿈)을 해결할 수 있다면 mixin과 같은 방법도 좋아보입니다. 상속, 합성, 믹스인 모두 도구일 뿐이라는 점을 상기시키는 것 같습니다. 도입..
DRY 원칙과 이를 달성하기 위한 방법으로 자주 사용되는 상속에 대해서 다룬 챕터였습니다. 우선 DRY를 판단하는 기준에 대해서 설명하는데 중복 코드의 기준은 코드의 모양이 아니라 변경시 함께 수정되어야 하는가 여부라는 내용이 좋았습니다. 기존 클래스와 유사한 동작을 하는 새로운 클래스를 만들기 위해서 Copy & Paste하는 것의 문제점을 살피고 상속을 활용해서 기존 코드를 재활용하는 방법을 보입니다. 하지만 부주의한 상속의 과정에서 따라오는 문제를 조명합니다. 부모 클래스를 잘못 설계하면 자식 클래스가 부모 클래스의 구현에 강하게 결합되며 부모 클래스를 점진적 개선 시키는 게 어렵다는 내용이였습니다. 상속과 중복 코드 DRY 원칙 중복 코드는 변경 방해 중복 여부 판단하는 기준은 변경이다. (not..