일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- 플러터 설치 2022
- 큐 자바 코드
- 안드로이드 레트로핏 사용법
- 2022 플러터 설치
- 안드로이드 라이선스
- rxjava hot observable
- 스택 자바 코드
- ANR이란
- 안드로이드 유닛 테스트
- 서비스 vs 쓰레드
- 안드로이드 레트로핏 crud
- 서비스 쓰레드 차이
- 안드로이드 os 구조
- 자바 다형성
- android retrofit login
- 객체
- jvm이란
- ar vr 차이
- rxjava disposable
- android ar 개발
- 클래스
- 멤버변수
- jvm 작동 원리
- 안드로이드 라이선스 종류
- 2022 플러터 안드로이드 스튜디오
- 안드로이드 유닛 테스트 예시
- Rxjava Observable
- 안드로이드 유닛테스트란
- 스택 큐 차이
- rxjava cold observable
- Today
- Total
나만을 위한 블로그
[이펙티브 코틀린] 아이템 25. 공통 모듈을 추출해서 여러 플랫폼에서 재사용하라 본문
기업이 한 플랫폼만을 대상으로 앱을 만드는 경우는 없다. 기업은 일반적으로 둘 이상의 플랫폼을 대상으로 하는 제품을 만들기 원하며 요즘 대부분 기업의 제품, 서비스는 여러 플랫폼에서 돌아가고 있다.
네트워크 호출을 통해 통신하는 클라이언트, 서버 앱을 생각해라. 두 앱은 서로 소통하므로 재사용할 수 있는 부분이 많을 것이다. 다른 플랫폼에 동일한 제품을 구현한다면 재사용할 수 있는 부분이 많을 것이다. 특히 비즈니스 로직 부분들은 거의 동일하다. 따라서 소스코드를 공유할 수 있다면 큰 이득이 발생할 것이다.
풀스택 개발
일반적으로 웹 사이트를 제품으로 사용하며 백엔드 애플리케이션(서버 측)이 필요하다. 웹 사이트 개발에선 자바스크립트 이외의 선택지는 없을 정도로 독점적으로 사용되고 있다. 백엔드에서 가장 인기 있는 선택지는 자바다. 두 언어는 굉장히 다르므로 일반적으로 백엔드, 웹은 분리해서 개발한다. 하지만 상황은 변할 수 있다. 코틀린은 백엔드 개발을 위한 자바의 인기 있는 대안이 되고 있다. 코틀린 백엔드 프레임워크인 Ktor도 점점 많이 쓰이고 있다. 그래서 최근 들어 많은 자바 백엔드 프로젝트들이 코틀린으로 이동하는 것이다.
코틀린의 굉장한 점 중 하나는 코틀린이 자바스크립트로 컴파일될 수 있다는 것이다. 이미 많은 코틀린/JS 라이브러리가 있으며 코틀린을 활용해 다양한 웹 앱을 만들 수 있다. 리액트와 코틀린/JS를 함께 써서 웹 프론트엔드를 만들 수도 있다. 즉 웹 백엔드와 프론트엔드를 모두 코틀린으로 만들 수 있다는 것이다. 이는 단순하게 만들 수 있다는 개념을 떠나 서로 코드를 공유할 수도 있다는 의미다. 따라서 공통 코드, API 엔드포인트 정의, 추상화 등을 재사용할 수 있다.
모바일 개발
일반적으로 안드로이드, iOS 앱은 거의 대부분 동일한 동작을 하고 내부적으로 비슷한 로직을 쓰지만 다른 언어, 도구를 써서 개발해야 한다. 코틀린의 멀티 플랫폼 기능을 활용하면 로직을 한 번만 구현하고 두 플랫폼에서 이를 재사용할 수 있다. 공통 모듈을 만들고 여기에 다양한 비즈니스 로직을 구현하면 된다. 이 때 비즈니스 로직은 프레임워크, 플랫폼에 종속되지 않고 독립적이어야 한다. 이런 공통 로직은 처음부터 코틀린으로 직접 만들거나 다른 공통 모듈을 써서 만들 수 있다.
안드로이드의 경우 gradle을 써서 동일한 방법으로 만들어지므로 직접 사용할 수 있다. 따라서 굉장히 쉽게 공통 모듈을 활용할 수 있다. iOS는 LLVM을 써서 네이티브 코드로 컴파일할 수 있는 코틀린/네이티브를 쓰면 Objective-C 프레임워크로 변환할 수 있다. 이렇게 변환하면 XCode 또는 AppCode에서 스위프트로 활용할 수 있다.
라이브러리
공통 모듈을 정의할 수 있다는 건 라이브러리에 있어서 강력한 도구다. 특히 플랫폼에 크게 의존하지 않는다는 점은 공통 모듈을 JVM, 자바스크립트, 네이티브 환경에서 작동하는 모든 언어에서 활용할 수 있다는 의미다.
'책 > Effective Kotlin' 카테고리의 다른 글
[이펙티브 코틀린] 아이템 27. 변화로부터 코드를 보호하려면 추상화를 사용하라 (0) | 2023.01.09 |
---|---|
[이펙티브 코틀린] 아이템 26. 함수 내부의 추상화 레벨을 통일하라 (0) | 2023.01.09 |
[이펙티브 코틀린] 아이템 24. 제네릭 타입과 variance 한정자를 활용하라 (0) | 2022.10.30 |
[이펙티브 코틀린] 아이템 23. 타입 파라미터의 섀도잉을 피하라 (0) | 2022.09.13 |
[이펙티브 코틀린] 아이템 22. 일반적인 알고리즘 구현 시 제네릭을 써라 (0) | 2022.09.12 |