다른 플랫폼에 동일한 제품을 구현한다면, 재사용할 수 있는 부분이 많을 것입니다. 특히 비즈니스 로직 부분읜 거의 동일합니다. 따라서 소스 코드를 공유할 수 있다면 큰 이득이 발생합니다. 풀스택 개발많은 회사가 웹 개발을 기반으로 하고, 웹사이트를 사용하며 백엔드 애플리케이션이 필요합니다. 다만, 프론트와 백엔드는 서로 사용하는 언어가 다르기에 분리해서 개발합니다. 백엔드에서 코틀린은 스프링 등의 다른 프레임워크를 사용할 수 있고, 코틀린 백엔드 프레임워크인 Ktor도 많이 사용되고 있습니다. 더 나아가서 코틀린은 자바스크립트로도 컴파일될 수 있습니다. 이미 많은 코틀린/JS 라이브러리가 있으며, 코틀린을 활용해 다양한 웹 애플리케이션을 만들 수 있습니다. 즉, 백엔드와 프런트엔드를 모두 코틀린으로..
프로퍼티 위임프로퍼티 위임은 프로퍼티의 접근자(getter, setter) 구현을 다른 객체에게 위임하는 방식입니다. 이를 통해 반복적으로 사용되는 프로퍼티의 행위를 추출해서 재사용할 수 있습니다.예를 들어 프로퍼티를 get할 때마다 반복적으로 특정 행위를 수행해야 한다면, getter에 해당하는 동작을 다른 객체에게 위임하여 대신 구현하는 방식으로 여러 프로퍼티에 공통적으로 적용할 수 있습니다. 대표적인 예로는 지연 프로퍼티가 있습니다.val value by lazy { createValue() } lazy 함수는 해당 프로퍼티를 처음 접근하려는 요청이 들어올 때 초기화를 수행하며, 이후에는 초기화된 값을 반환하는 동작을 제공합니다. 이 동작은 lazy 함수에 의해 생성된 객체가 프로퍼티의 getter..
코틀린에는 대표적으로 아래와 같은 컨벤션 도구가 있습니다. Kotlin 코드 스타일 플러그인 (Kotlin Plugin)IntelliJ IDEA나 Android Studio와 같은 IDE에서 Kotlin 코드 스타일을 자동으로 적용할 수 있는 플러그인이 제공됩니다. 이 플러그인은 Kotlin 코드 스타일 가이드를 준수하도록 도와줍니다.ktlintktlint는 Kotlin 코드의 스타일을 검사하고 자동으로 수정해주는 도구입니다. Kotlin 스타일 가이드에 맞게 코드의 포맷을 자동으로 수정할 수 있습니다. 설정을 통해 팀의 코딩 스타일에 맞게 커스터마이즈 할 수도 있습니다.DetektDetekt는 Kotlin 코드의 품질을 분석하는 도구로, 코드 스타일뿐만 아니라 성능, 코드 복잡도, 잠재적인 버그 등을 ..
사용자의 관점에서 애플리케이션 외부적으로 제대로 작동하는지 확인하는 것이 목표인 테스트는 개발자에게 유용하지만 충분하지는 않습니다. 이것만으로는 해당 요소가 올바르게 작동한다는 것을 완전하게 보증할 수는 없습니다. 그렇기 때문에 단위 테스트(Unit Test)가 필요합니다. 확인할 내용단위 테스트는 일반적으로 다음과 같은 내용을 확인합니다. 1. 일반적인 유스케이스이는 사용될 것이라고 예상되는 정상적인 입력 값에 대해 프로그램이 의도한 대로 작동하는지 확인하는 경우입니다.fun get(list: List, index: Int): Int { return list[index]}@Testfun `인덱스의 해당하는 값을 가져올 수 있어야 한다`() { val numbers = listOf(1, 2,..
상태(state)var을 사용하거나 mutable 객체를 사용하면 값이 변동될 여지가 생기게 됩니다. 이를 상태(state)라고 합니다. 상태를 가지게 되는 경우, 이제는 객체의 사용 방법뿐만이 아니라 객체의 상태에 대한 이력(history)에 의존하게 됩니다. 그렇기에 코틀린에서는 주로 3가지 방법을 사용해서 가변성을 제한합니다.val (읽기 전용 프로퍼티)가변 컬렉션과 읽기 전용 컬렉션 구분하기데이터 클래스의 copy valval을 사용해 읽기 전용 프로퍼티를 만들 수 있습니다. 다만 이러한 val의 값이 항상 변하지 않는다는 말은 아닙니다. val이 mutable 하거나 getter를 정의해서 다른 변경 가능한 프로퍼티를 참조한다면, val 값도 변할 수 있습니다. 아래의 예시에서 person은 ..
2장을 시작하며 코틀린은 간결성을 목표로 설계된 프로그래밍 언어가 아니라 가독성(readablitiy)을 좋게 하는 데 목표를 두고 설계된 프로그래밍 언어입니다. 코틀린을 사용하면 깨끗하고 의미 있는 코드와 API를 쉽게 작성할 수 있으며, 우리가 원하는 것을 숨기거나 강조할 수 있게 하는 기능을 제공합니다. 이번 장에서는 이러한 기능을 사용하는 방법을 다룹니다. 아이템 11 - "가독성을 목표로 설계하라" 프로그래밍은 쓰기보다 읽기가 더 중요합니다. 그렇기 때문에 항상 가독성을 생각하면서 코드를 작성해야 합니다. 인식 부하 감소 코드를 작성할 때에는 기본적으로 `인지 부하`를 줄이는 방식으로 작성해야 합니다. 우리의 뇌는 기본적으로 짧은 코드를 빠르게 읽을 수 있지만, 익숙한 코드는 더 빠르게 읽을 수..
코루틴 코틀린에서는 동시성 기능을 처리할 수 있도록 다양한 클래스와 함수를 코루틴으로 지원합니다. 코루틴이란? 코루틴은 이러한 동시성 작업을 간편하게 처리할 수 있게 해줍니다. 코루틴과 서브루틴의 차이점 서브루틴은(subroutine)은 함수를 호출했을 때 결과를 반환하는 순수 함수입니다. 이런 서브루틴 함수는 순차적으로 처리됩니다. 코루틴(Corutine)은 상태를 관리하고 일시 중단했다가 다시 시작할 수 있는 일시중단 함수로 구성합니다. 동시성 프로그래밍 동시성 프로그래밍은 기존의 순서대로 명령들이 실행되는 구조에서 벗어나 명령들이 불규칙한 순서대로 실행될 수 있게 해주는 프로그래밍 기법입니다. 멀티쓰레딩은 동시성 프로그래밍의 한 방법이지만, 동시성 프로그래밍이 꼭 병렬처리 및 멀티쓰레딩을 의미하지는..
파일 I/O 처리 파일 처리는 Input / Output에 대한 데이터 처리를 말합니다. 이런 데이터가 처리되어 흐르는 `데이터의 흐름`을 Stream이라고 합니다. 자바에서는 이러한 기능을 수행하기 위해 입출력을 위한 기본 패키지인 `java.io`에 InputStream과 OutputStream이 존재하고 이를 기반으로 상속하여 바이트 단위로 처리하도록 하는 ByteArrayInputStream과 ByteArrayOutputStream이 있습니다. 바이트 스트림 데이터를 읽고 쓸 때 바이트 스트림을 사용합니다. 사용하는 방법은 아래와 같습니다. import java.io.ByteArrayInputStream import java.io.ByteArrayOutputStream val inScr = byt..