컴퓨터가 인식할 수 있는 코드는 바보라도 작성할 수 있지만, 인간이 이해할 수 있는 코드는 실력 있는 프로그래머만 작성할 수 있다.- 마틴 파울러(Martin Fowler), 코틀린은 간결성을 목표로 설계된 프로그래밍 언어가 아니라, 가독성(readability)을 좋게 하는 데 목표를 두고 설계된 프로그래밍 언어입니다.아이템 11 - 가독성을 목표로 설계하라개발자는 어떤 코드를 작성하는 것보다 읽는 데 많은 시간을 소모한다. 예를 들어, 오류가 발생했을 때 오류를 찾기 위해 코드를 작성할 때보다 오랜 시간 코드를 읽는 자신을 발견할 수 있다.가독성이란, 코드를 읽고 얼마나 빠르게 이해할 수 있는지를 의미합니다. 이는 우리의 뇌가 얼마나 많은 관용구(구조, 함수, 패턴)에 익숙해져 있는지에 따라 다릅니다..
분류 전체보기
아이템 1 - 가변성을 제한하라- var보다는 val을 사용하고, mutable 프로퍼티보다는 immutable 프로퍼티를 사용하는 것이 좋습니다.- 변경이 필요할 경우에는, 처음부터 읽고 쓸 수 있는 요소를 사용하기 보단 data class의 copy를 활용하는 것이 좋습니다.- 변경 가능 지점은 최소화하여 불필요한 곳에서 변경이 일어나는 것을 막는 것이 좋습니다.코틀린에서 읽고 쓸 수 있는 프로퍼티(read-write property) var을 사용하거나, mutable 객체를 사용하면 상태를 가질 수 있습니다.요소가 상태를 갖게 되면, 해당 요소의 동작은 사용 방법 뿐 아니라 그 이력에도 의존하게 됩니다.상태를 갖는 요소는 시간의 변화에 따라 바뀌는 요소를 표현할 수는 있지만, 관리하기 어렵습니다...
들어가기 전에저는 보통 제목1은 사용하지 않고, 제목2부터 사용하고 있어 제목3에 대한 목차가 필요했습니다. 구글링해보니, 기본적으로 제가 사용하는 hELLO 티스토리 스킨은 자동목차에 제목3을 포함하지 않는다고 적혀있었습니다. 다행히도, hELLO 제작자가 git 레포지토리에 자동목차에 제목3을 직접 추가할 수 있는 방법을 가이드 주신 부분이 있어 해당 내용을 적용해본 내용을 담아보고자 글을 작성하였습니다. 사용하고 계시는 hELLO 버전에 따라 아래 내용을 적용하지 못할 수 있는 점 참고 부탁드립니다.적용 시 사용한 hELLO 버전: 4.5.3자동목차에 제목3 포함하기위 사진에서 볼 수 있듯이 script.js와 skin.html을 수정하면 손쉽게 자동목차에 제목3을 포함할 수 있습니다. 제가 기존..
목표코루틴 컨텍스트와 디스패처의 역할 및 중요성 학습다양한 디스패처(Main, IO, Default) 사용 시나리오 실습컨텍스트 전환과 예외 처리 방법 탐구CoroutineContextcoroutineContext는 코루틴을 실행하는 실행 환경을 설정하고 관리하는 인터페이스로, CoroutineContext 객체는 CoroutineDispatcher, CoroutineName, Job 등의 객체를 조합하여 코루틴의 실행 환경을 설정합니다. 따라서, CoroutineContext 객체는 코루틴 실행 및 관리의 핵심 역할을 합니다.CoroutineContext는 launch나 async 코루틴 빌더의 파라미터로 설정할 수 있으며, 해당 파라미터에 CoroutineContext를 명시적으로 지정하면 특정 스레..
목표launch와 async 빌더 사용법과 각각의 특징 설명Deferred 객체 사용법과 비동기 결과 처리 방법실제 네트워크 호출을 예로 들어 비동기 처리 실습코루틴 빌더 함수코루틴을 생성하는 데 사용하는 함수를 코루틴 빌더 함수라고 한다.코루틴 빌더 함수 종류- runBlocking- launch- asynclaunchlaunch는 코루틴을 추상화한 Job 객체를 반환하며, 이 Job 객체가 cancel되면 코루틴도 cancel됩니다.launch의 coroutineContext는 CoroutineScope를 통해 상속받고, 추가적인 context 요소를 넣을 수도 있습니다.만약, 동일한 key를 가진 context 요소가 이미 있었다면 해당 값을 덮어씌우는 형태로 동작합니다.위 이미지를 보면 확인할 수..
Kotest pluginKotest는 IntelliJ에서 구현할 때 편리함을 주는 플러그인을 제공한다. 각 테스트별로 실행/디버깅중복 테스트 이름이 있을 경우, 밑줄로 알려줌context 내 test는 이름 중복되어도 알려주지 않고, 상위 test에 대해서만 이름 중복 여부 알려줌특정 패키지에 있는 전체 테스트 실행/디버킹해당 플러그인은 IntelliJ에서 아래와 같이 검색이 가능하다.
목표Kotlin 코루틴이 등장한 배경과 기본 개념 소개Launch와 suspend 함수를 사용한 간단한 예제를 통해 코루틴의 기본 실습JVM 프로세스와 스레드더보기프로그램이란?프로그램은 디스크에 저장된 파일의 내용(ex. 소스코드 파일)처럼 보조 메모리에 저장된 수동적 개체(passive entity)이다.실행되어야 할 몇 가지 명령들이 포함된 파일로, 실제로 수행하기 위해서는 메모리에 올려서 실행되어야 한다.프로세스란?프로세스(Job)은 CPU에 의해 실행될 수 있도록 컴퓨터 메모리에 로드된 프로그램 코드를 의미합니다.프로세스는 컴퓨터에서 실행되는 프로그램의 인스턴스로도 볼 수 있습니다.프로세스가 동작하기 위해서는 메모리 주소, CPU, I/O와 같은 리소스가 필요합니다.프로세스는 수행되는 동안에만 존..
sdkman을 이용한 Java 버전 관리하기 로컬환경에서 개발할 때, 프로젝트마다 Java 버전이 다를 경우 매번 직접 구글링해서 원하는 Java 버전 설치 및 설정을 해야합니다. 이때, sdkman을 활용하면 편하게 Java 버전을 설정할 수 있습니다. sdkman 설치하기 # sdkman 설치 curl -s "https://get.sdkman.io" | bash source "$HOME/.sdkman/bin/sdkman-init.sh" # sdk 버전 정보가 나오면 정상적으로 설치된 것 sdk version sdkman은 macOS, 리눅스, 윈도우 환경에서 모두 사용이 가능하며, Zsh와도 호환됩니다. 유용한 sdkman 명령어 특정 버전의 언어를 설치하고자 할 경우 # sdk install [언어..