본문 바로가기

Android/Kotlin

(5)
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..