본문 바로가기
DI(의존성 주입)은 무엇인가? 그리고 Koin DI를 적용하는 과정 저번의 MVVM과 같이 많은 실무 프로젝트에서 사용되는 Dependency Injection에 대해서 알아보겠습니다. Andorid에서도 좋은 App Architecture를 구현하기 위하여 권장하고 있는 원칙이기도 합니다. 다들 DI라고 부릅니다. 좋은 App Architecture를 위해서 AAC패턴을 적용하는 것처럼 DI도 같은 목적을 위해서 적용하기를 권장하는 것입니다. 코드의 재사용성 리팩토링의 용이성 테스트 편의성 Android에서는 아래와 같은 코드를 제시하면서 DI에 대하여 소개하고 있습니다. class Car { private val engine = Engine() fun start() { engine.start() } } fun main(args: Array) { val car = Ca.. 2022. 9. 14.
2부 코드설계 > 6장 클래스 설계 > data, sealed, abstract 한정자 / 함수타입 / 태그클래스 2부 코드설계 > 6장 클래스 설계 > 데이터 집합 표현에 data한정자를 사용하라 2부 코드설계 > 6장 클래스 설계 > 연산 또는 액션을 전달할 때는 인터페이스 대신 함수타입을 사용하라 2부 코드설계 > 6장 클래스 설계 > 태그 클래스 보다는 클래스 계층을 사용하라 오늘의 TIL 3줄 요약 data 한정자, 데이터 클래스의 장점 함수타입으로 얻는 코드의 자유 태그 클래스 vs. 클래스 계층 (sealed, abstract한정자) 1. 책에서 기억하고 싶은 내용 data 한정자, 데이터들을 한꺼번에 전달해야 할 때 사용하는 클래스에 붙어있는 것을 확인할 수 있다. 이 한정자를 붙이면 아래의 함수들이 자동으로 생성된다. - toString : 로그 출력 및 디버그 시 활용 - equals, hashCo.. 2022. 9. 2.
2부 코드설계 > 6장 클래스 설계 > 상속보다는 컴포지션을 사용하라 2부 코드 설계 > 6장 클래스 설계 > 상속보다는 컴포지션을 사용하라 오늘의 TIL 3줄 요약 명확한 is-a 관계에서는 상속 (계층구조의 표현, 뷰를 출력) 컴포지션을 통한 인터페이스 분리원칙, 리스코프 치환원칙 개선 위임패턴과 포워딩 메서드 : 캡슐화가 깨지지 않도록 관리 1. 책에서 기억하고 싶은 내용 상속에 대한 몇 가지 단점 - 상속은 하나의 클래스만을 대상으로 할 수 있다. 상속을 사용하다 보면 많은 함수를 갖는 거대한 클래스를 가지게 되고 이는 복잡한 계층구조를 만들어 낸다. - 상속은 클래스의 모든 것을 가져온다. 따라서 불필요한 함수를 가지는 클래스가 만들어질 수 있다. (인터페이스 분리 원칙 위반) - 상속은 이해하기 어렵고, 메서드의 작동방식을 이해하기 위하여 슈퍼클래스를 여러 번 .. 2022. 9. 1.
MVVM에 대하여, 그리고 간단한 샘플코드를 만들어보기 안드로이드에서는 MVVM을 제외하고 MVC, MVP 등의 구조를 제공하고 있습니다 MVVM 만큼이나 많이 쓰이는 구조들이므로 AAC(**Android Architecture Component)**는 모두 알아두는 것이 좋습니다. 하지만 오늘은 제가 실무 프로젝트에서 사용하였던 MVVM패턴에 대하여 자세히 알아보고 관련 내용의 가장 기본 골격을 어떻게 앱 프로젝트에 적용할 수 있는지 하나씩 알아보도록 하겠습니다. AAC 중 MVVM은 [Model / View / ViewModel]라고 생각하시면 됩니다. Android Developer에서는 아래의 이미지를 App Architecture Diagram으로 소개하고 있습니다. 즉, 앱의 구조를 아래와 같이 구성하고 주요 살들을 붙여나가면 Android에서 권.. 2022. 8. 31.
2부 코드설계 > 3장 재사용성 2부 코드설계 > 3장 재사용성 1. 책에서 기억하고 싶은 내용 knowledge를 반복하여 사용하지말라. - 모든 것은 변화하고, 우리는 이에 대비해야 합니다. 변화할 때 가장 큰 적은 knowledge가 반복되어 있는 부분입니다. - knowledge의 반복은 프로젝트의 확장성(scalable)을 막고, 쉽게 깨지게(fragile)하게 만듭니다. 다행히도 개벌자는 knowledge 반복을 줄일 수 있는 도구와 기능을 사옹할 수 있습니다. - 여러종류의 추상화를 표현할 수 있는 솔루션. (변화로부터 코드 보호하려면 추상화를 사용하라) - 단일 책임 원칙이란 '클래스를 변경하는 이유는 단 한 가지여야 한다'라는 의미이다 - 서로 다른 곳에서 사용하는 knowledge는 독립적으로 변경할 가능성이 많습나다.. 2022. 7. 27.
[TIL] 8장 프로젝트 전에 , 9장 실용주의 프로젝트 8장 프로젝트 전에 | 9장 실용주의 프로젝트 노마드 북클럽은 끝난지 좀 되었고, 나는 결국 완주해내지는 못했다. 그래도 책을 마무리를 지어야 하기 때문에 올려보는 실용주의 프로그래머 마지막 TIL. 좀 더 정리해야하는 TIL들이 남아있기는 한데 마무리도 지어야 새로운 책을 읽어나갈 수 있어서 일단 마무리를 해본다. 오늘의 TIL 3줄 요약 프로그래머의 역할은 더 나은 결과를 낼 수 있도록 노력하는 문제해결사이다. 팀을 더 가치있게 만들 수 있는 프로그래머가 되어야 한다. 내 코드와 나의 결과물에 자부심을 가져야 한다. 1. 책에서 기억하고 싶은 내용 완성이라는 것은 더 이상 더할 것이 없을 때가 아니라, 더 이상 뺄 것이 없을 때 달성되는 것이다. - 앙투안 드 생텍쥐페리 [ 자신이 뭘 원하는지 정확히.. 2022. 6. 25.
728x90
반응형