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

코틀린은 순수 함수형 스타일로 작성할 수도 있지만 자바처럼 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를 더보기…

코틀린에서 Annotation Processor를 디버깅 하는 방법

코틀린에서 Annotation Processor를 디버깅 하는 방법 https://medium.com/@cafonsomota/debug-annotation-processor-in-kotlin-6eb462e965f8 아래에 나올 내용은 위 링크의 내용을 번역하고, 추가적인 내용을 덧붙인 글입니다. 코틀린 언어를 사용하면서 애노테이션 프로세서 다루는 경우 어떻게 디버깅을 할 수 있는지 알아봅시다. 로그 출력하기 어노테이션 프로세서가 컴파일 타임에 작업을 수행하는 동안 로그를 출력하기기 위해서는 ProcessingEnvironment.getMessager().printMessage(…)를 호출 해야 한다. ProcessingEnvironment 객체는 AbstractProcessor 더보기…

액티비티 결과 처리하기 (Good bye… startActivityForResult, onActivityResult)

액티비티(Activity)는 안드로이드의 주요 컴포넌트 중 하나로 애플리케이션에서 필수적으로 사용된다. 2007년, 안드로이드가 등장한 뒤로 액티비티간에 데이터(인텐트)를 전달하고, 결과를 처리할 때 개발자는 startActivityForResult()의 호출과 onActivityResult(requestCode, resultCode, data) 콜백호출을 다뤄왔다. 새로운 액티비티 결과(Activity Result) API는 지금까지 해오던 방법을 개선하여 완전히 새로운 액티비티 결과 처리 방법을 제공한다. 기존 방법으로 액티비티 결과 전달받기 예를 들어 더보기…