본문 바로가기

Android

(16)
Kotlin - [이펙티브 코틀린] 코드설계(2) 이 글은 이펙티브 코틀린 책을 참고하여 쓰여졌습니다. 개발자가 코드를 작성할 때 동작이 명확하고 한눈에 기능이 들어오도록 만드는 것이 중요합니다. 이때 코틀린을 이용하여 코드를 깔끔하고 의미있게 만드는 방법을 하나씩 알아보겠습니다. 1. 생성자 대신 팩토리 함수를 사용하라 객체를 만들 때 클래스의 생성자를 이용하여 객체를 만들 수 있습니다. 생성자 역할을 대신 해주는 팩토리 함수가 있는 데 이를 사용했을 때 장점으로는 다음과 같습니다 생성자와 다르게 함수에 이름을 붙일 수 있다. 이름으로 객체 생성시 아규먼트가 무엇인지 구분할 수 있고 같은 타입으로 생성되는 생성자와 충돌을 방지한다. 함수의 반환값을 원하는 형태대로 리턴할 수 있다. ex) listOf - List인터페이스로 리턴 호출될 때마다 생성하지..
Kotlin - [이펙티브 코틀린] 코드설계(1) 이 글은 이펙티브 코틀린 책을 참고하여 쓰여졌습니다. 개발자가 코드를 작성할 때 동작이 명확하고 한눈에 기능이 들어오도록 만드는 것이 중요합니다. 이때 코틀린을 이용하여 코드를 깔끔하고 의미있게 만드는 방법을 하나씩 알아보겠습니다. 1. Knowledge를 반복하여 사용하지 말라 여기서 표현한 knowledge는 의도적인 정보로 코드, 데이터로 표현할 수 있습니다. 크게 두가지로 나뉘는데 로직, 공통 알고리즘입니다. 로직 프로그램이 동작하는 방향 공통 알고리즘 원하는 동작을 하기 위한 알고리즘 코드에서 일부 디자인, 동작들이 변경될 때 모든 부분을 수정하기는 쉽지않습니다. ex) 공통사용 UI (Button)... 이로 인해 코드는 공통으로 사용하고 이는 관리가 필요한데 이때 피필요한 것이 단일책임원칙입..
Kotlin - [이펙티브 코틀린] 가독성 이 글은 이펙티브 코틀린 책을 참고하여 쓰여졌습니다. 개발자가 코드를 작성할 때 동작이 명확하고 한눈에 기능이 들어오도록 만드는 것이 중요합니다. 이때 코틀린을 이용하여 코드를 깔끔하고 의미있게 만드는 방법을 하나씩 알아보겠습니다. 1. 가독성을 목표로 설계하라 개발자는 코드를 작성하기도 하지만 작성한 코드를 다시 한번 살펴본다거나 기존 코드를 둘러보고 작성하는 경우가 많습니다. 이는 코드를 읽는데 많은 시간이 든다는 것입니다. 이를 해결하기 위해 가독성이 좋은 코드를 작성하는 것이 중요합니다. 특히 협업이 이루어지는 프로젝트에서 가독성이 좋게 작성된 코드를 자신뿐만 아니라 팀원들도 확인하게 되므로 모두의 시간을 절약할 수 있게 됩니다. val product: Product? = Product("Effe..
Kotlin - [이펙티브 코틀린] 안정성 이 글은 이펙티브 코틀린 책을 참고하여 쓰여졌습니다. 코틀린의 특징 중 하나는 안정성입니다. 이는 애플리케이션의 오류를 줄여줌으로써 사용자와 개발자 모두에게 좋은 결과를 제공할 수 있습니다. 코틀린을 안전하게 사용하기 위한 방법을 하나씩 살펴보겠습니다. 1. 가변성을 제거하라 class Product(var name: String) { var stock = 10 fun addStock(count: Int) { stock += count } fun removeStock(count: Int) { if (stock < count) { throw OutOfStockException() } stock -= count } class OutOfStockException: Exception() } 위의 코드를 살펴보면..
Kotlin - 언어 살펴보기 1. 코틀린을 쓰는 이유 기존 Android 개발자들은 많은 코드들을 Java로 작성하였습니다. 하지만 2017년 구글이 안드로이드의 공식언어로 Kotlin을 추가한 이후 많은 앱들에 Kotlin 언어를 적용하여 개발되어지고 있습니다. 왜 기존 Java를 사용하지 않고 Kotlin을 사용하는지 알아보겠습니다. - 간결한 코드작성, 안전한 객체 관리 상용구 코드를 적게 사용하여 개발을 진행할 수 있습니다. 간단한 코드 예시를 통해 확인해보겠습니다. //Java String name = "이성진"; String address = null; final String URL = "https://sungjinlee.tistory.com/"; //Kotlin var name = "이성진" var address: St..
Android Rxjava - EventBus 생성, Debounce사용 01. EventBus 생성 Rxjava를 이용해서 이벤트를 어디서나 알려주고 받을 수 있는 기능을 추가해보려고 합니다. class RxEventBus { companion object { @Volatile private var sInstance: RxEventBus? = null fun getInstance(): RxEventBus { synchronized(RxEventBus::class.java) { if (sInstance == null) { sInstance = RxEventBus() } } return sInstance!! } } private var mSubject: PublishSubject = PublishSubject.create() fun sendBus(busObject: EventB..
Android Rxjava - 소개, 설정, Observable객체 사용 01. Rxjava란? 반응형 프로그래밍(Reactive Programming) 기능을 Java로 구현한 라이브러리입니다. 반응형이라는 말 뜻을 그대로 풀이해본다면 주위의 값이 변경되면 함께 변경된다는 의미인데 이는 LiveData에서 값의 변경에 따라 등록해둔 뷰가 변경되는 형식과 유사합니다. Rxjava에서는 안드로이드 스케쥴러를 이용하여 데이터의 변경이나 들어오는 순서에 따라 어떻게 처리해야할지 개발자가 선택할 수 있습니다. 변경되는 데이터를 확인하기 위해 데이터 스트림을 만들며 해당 스트림에 데이터가 하나씩 들어갈때마다 개발자가 등록해둔 동작이 이루어지므로 해당 동작들이 동기화되어 처리됩니다. 예를 들어 User 데이터가 있고 해당 데이터가 변경될 때 User의 이름, 나이, 기타사항 들을 표시하..
Android Coroutine - 제어 사용 01. Coroutine 제어 Coroutine 블록 내에서 사용되는 예약어들을 살펴보겠습니다. 해당 예약어를 이용하여 Coroutine 블록 내에서 값을 받거나 해당 Coroutine내에서 동기적으로 처리될지 비동기적으로 처리될지 구분하여 코드를 작성할 수 있습니다. 대표적인 예약어로 launch, async, Job, Deferred, runBlocking이 있습니다. launch와 Job, async와 Deferred, runBlocking으로 묶어서 사용된 코드와 작성한 코드로 표시되는 출력값들을 이용해서 보여드리겠습니다. 02. launch와 Job launch { } 를 이용하여 코루틴 블록내에서 다른 작업을 구분하는 경우 Job객체로 반환받을 수 있습니다. Job객체는 코루틴 블록내에서 완료..