코틀린/자바의 volatile에 대해서

volatile이란? 자바의 volatile 키워드 또는 코틀린의 @Volatile 애노테이션을 변수 선언시 지정할 수 있다. 사전적 의미로는 ‘휘발성의’라는 뜻을 가지며, 변수 선언시 volatile을 지정하면 값을 메인 메모리에만 적재하게 된다. volatile 변수를 사용하지 않는 일반적인 경우는 내부적으로 성능 향상을 위해 메인 메모리로부터 읽어온 값을 CPU 캐시에 저장한다. 하지만 멀티쓰레드 애플리케이션에서는 각 쓰레드를 통해 더보기…

[이펙티브 코틀린 요약] 클래스 설계

코틀린에서 자주 사용하는 클래스 패턴을 살펴보도록 한다. 이번 장에서는 다음의 내용에 대해서 생각 해 볼 수 있다. ‘상속’을 활용해야 하는 경우 ‘data 클래스’를 사용해야 하는 경우 하나의 메서드를 갖는 인터페이스를 함수 타입으로 사용해야 하는 경우 equals, hashCode 그리고 compareTo의 규약 상속보다는 컴포지션 사용하기 상속은 계층 구조를 만들기 위해 사용한다. 계층 더보기…

[이펙티브 코틀린 요약] 객체 생성에 대하여

코틀린은 순수 함수형 스타일로 작성할 수도 있지만 자바처럼 OOP스타일로도 작성할 수 있다. 객체를 생성하는 방법에느 어떤 것들이 있고 어떠한 장단점이 있는지 살펴보자. 생성자 대신 팩토리 함수 사용하기 객체를 만드는 일반적인 방법은 생성자를 사용하는 방법이지만, 팩토리 패턴을 이용한 객체를 생성할 수도 있다. 팩토리 함수(패턴)의 특징 생성자와 다르게 함수에 원하는 이름을 붙일 더보기…

[이펙티브 코틀린 요약] 추상화 설계에 대하여

추상화 객체 지향 프로그래밍(Object-Oriented Programming;OOP)에서 주요한 개념은 추상화, 캡슐화, 상속이 있다. 이 중 추상화에 대해서 알아본다. 추상화는 복잡성을 숨기기 위해 사용되는 단순한 형식을 의미한다. 대표적인 예가 인터페이스(interface)다. 클래스라는 복잡한 개념에서 메서드와 프로퍼티만 추출해서 단순화 했으므로 이를 추상화라 말할 수 있다. 실세계에서는 자동차를 예를 들 수 있다. 자동차는 굉장히 잘 만들어진 더보기…

[이펙티브 코틀린 요약] 재사용성(Reusability)에 대하여

프로젝트에서 이미 있던 코드를 복사해서 붙여넣고 있다면, 무언가가 잘못된 것이다. -이펙티브 코틀린 저자- Knowledge를 반복하여 사용하지 말라 여기서 언급하는 knowledge는 일반적으로 표현하는 ‘지식’과 약간 다르게 ‘의도적인 정보’를 나타내는 개념으로, <실용주의 프로그래머> 라는 책에서 언급된다. 이 책에서는 ‘Don’t Repat Yourself’라는 규칙을 ‘DRY 규칙’이라고 표현한다. 또는 WET 안티패턴이라고도 한다. 프로그램에서 중요한 knowledge를 더보기…

[이펙티브 코틀린 요약] 가독성(Readability)에 대하여

코틀린은 간결함 보다는 가독성을 좋게하는 데 목표를 두고 설계된 프로그래밍 언어다. 코틀린을 사용하면 깨끗하고 의미 있는 코드와 API를 쉽게 작성할 수 있다. 다음의 항목들을 참조하여 가독성 좋은 코드를 작성해보자. 1. 가독성을 목표로 설계하기 개발자는 코드를 작성하는 시간보다 읽는데 많은 시간을 소모한다. 따라서 항상 가독성을 생각하면서 코드를 작성해야 한다. 가독성이란 코드를 더보기…

[이펙티브 코틀린 요약] 안정성(Safety)에 대하여

이 책에서 코틀린을 사용하는 첫번째 이유로 안정성(Safety)을 꼽고 있다. 코틀린은 잠재적인 오류와 크래시를 줄이며, 사용자와 개발자 모두에게 좋은 비즈니스 가치를 제공한다라고 설명한다. 안전성은 기본적으로는 언어일뿐이고, 사실은 개발자가 이를 사용하여 어떻게 코드를 작성하느냐에 따라 안정성이 좌지우지 된다. 다음의 항목들을 참고하여 오류가 덜 발생하는 코드를 만들 수 있다고 이 책은 소개 하고 더보기…

KAPT보다 2배 더 빠르게, 코틀린을 위한 KSP

KSP(Kotlin Symbol Processing) KSP(Kotlin Symbol Processing)는 코틀린에서 경량화 된 컴파일러 플러그인을 개발할 수 있는 API다.  학습곡선을 최소한으로 줄이고, 코틀린의 기능을 활용할 수 있는 단순화된 API를 제공한다. KSP는 코틀린 1.4.30 버전 이상부터 호환되며, KAPT와 비교했을 때 KSP를 사용하는 애노테이션 프로세서는 최대 2배 더 빠르게 실행할 수 있다. 자세한 내용은  KSP Github 더보기…

코루틴이 경량 스레드인 이유 (Light-weight thread)

Why Coroutine is light-weight thread 코틀린 공식 문서에서는 코루틴을 경량 스레드(light-weight thread)라고 표현하고 있는데, 그 이유를 알아보자. 코루틴은 스레드에서 실행된다. 이것은 대원칙이다. 코루틴이 단독으로 또는 다른 수단에 의해 실행될 수 없다는 것을 명심하자. 그리고 여러개의 코루틴을 하나의 스레드를 지정하여 실행할 수 있지만 동시에 실행 하는 것은 불가능하고, 한번에 하나의 명령어만 더보기…

Jetpack 새로운 점 요약(What’s new in Android Jetpack)

 위의 영상을 요약한 내용입니다. 구글 안드로이드 소프트웨어 엔지니어인 이짓 보이어가 안드로이드 Jetpack에 대해서 설명을 시작합니다. 상위 1000개의 앱에서 47%가 두 개 이상의 Jetpack 라이브러리를 사용한다네요. Hilt Jetpack 설명하다가 바로 의존성 주입 이야기를 시작하며 Hilt라는 카드를 꺼냅니다. Hilt는 Dagger 기반의 안드로이드 전용 의존성 주입 라이브러리입니다. 구글이 Jetpack의 첫 소개로 Hilt를 더보기…