코틀린 54

[Kotlin] 예외 처리

Kotlin in Action 을 공부하고 Effective kotlin 의 내용을 조금 참조하여 정리한 글입니다. 코틀린의 exception 처리는 자바나 다른 언어의 예외 처리와 비슷하다. 정상적인 종료가 아닐 때 예외를 던질 수 있고(`throw`), 함수 호출부에서는 그 예외를 잡아서 처리할 수 있다. 발생한 예외를 함수 호출부에서 처리하지 않으면 함수 호출 스택을 거슬러 올라가면서 예외를 처리하는 부분이 나올 때까지 예외를 다시 던진다(`rethrow`). 코틀린의 기본 예외 처리 코드 예시를 보자. 자바와 비슷하다. if (percentage !in 1..100) { throw IllegalArgumentException( "A percentage value must be between 0 a..

Kotlin 2023.12.28

[kotlin] 이터레이션 기초: while, for 루프

Kotlin in Action 을 공부하고 Effective kotlin 의 내용을 조금 참조하여 정리한 글입니다. while 루프 코틀린에는 자바와 같은 문법의 `while` 과 `do-while` 루프가 있다. while (조건) { // 조건이 참인 동안 본문을 반복 실행 /* ... */ } do { /* ... */ } while (조건) // 맨 처음에 무조건 본문을 한 번 실행, 그 후 조건이 참인 동안 본문을 반복 실행 수에 대한 iteration: range(범위), progression(수열) 자바에서는 `for` 루프를 아래처럼 사용한다. `for (어떤 변수 i 를 초기화하는 식; 각 루프 후 조건 검사 ;변수 i를 루프를 한번 실행할 때마다 갱신)` 코틀린에서는 `for` 루프를 ..

Kotlin 2023.12.27

[Kotlin] enum & when & smart cast(스마트 캐스트)

Kotlin in Action 을 공부하고 Effective kotlin 의 내용을 조금 참조하여 정리한 글입니다. enum 클래스 `enum` 은 soft keyword 라고 한다. `class` 앞에 붙을 때는 특별한 의미를 가지지만, 그렇지 않을 경우에는 일반 이름으로 사용이 가능하다. 반면에 `class` 는 그냥 keyword 이다. 그래서 클래스를 표현하는 변수 등을 정의할 때는 이름을 `class` 로 하지 못한다. 보통 `clazz` 또는 `mClass` 라고 정의한다. enum class Color( val r: Int, val g: Int, val b: Int // 상수의 프로퍼티를 정의 ) { RED(255, 0, 0), // 각 상수를 생성할 때 그에 대한 프로퍼티 값을 지정 ORA..

Kotlin 2023.12.27

[Kotlin] 클래스와 프로퍼티 기초

Kotlin in Action 을 공부하고 Effective kotlin 의 내용을 조금 참조하여 정리한 글입니다. 이번에는 클래스를 선언하는 기본 문법, 그리고 프로퍼티를 다룬다. JavaBean 클래스를 코틀린 코드로 보기 먼저 간단한 `JavaBean` 클래스 `Person` 을 봅시다. public class Person { private final String name; public Person(String name) { this.name = name; // 필드가 늘어날 수록 생성자 바디에 비슷한 코드가 반복적으로 들어간다. } public String getName() { return name; } } `Person` 클래스는 필드를 오직 `String` 타입의 `name` 만을 가진다. 만..

Kotlin 2023.12.27

[우테코 6기 - 안드로이드] 프리코스 3주차 로또 회고와 냄새나는 내 코드

3주차 미션은 로또 게임이다. 요구사항들은 아래 링크에서 확인할 수 있다. https://github.com/woowacourse-precourse/kotlin-lotto-6 GitHub - woowacourse-precourse/kotlin-lotto-6: 로또 미션을 진행하는 저장소 로또 미션을 진행하는 저장소. Contribute to woowacourse-precourse/kotlin-lotto-6 development by creating an account on GitHub. github.com 이번 미션에서는 아래와 같은 요구사항이 추가되었다. 함수 또는 메서드의 길이가 15라인을 넘어가지 않도록 구현한다. 함수(또는 메서드)가 한 가지 일만 잘 하도록 구현한다. `else` 를 지양한다. ..

[우테코 6기 - 안드로이드] 프리코스 2주차 자동차 경주 회고

2주차 미션은 자동차 경주이다. 기능에 대한 요구사항은 아래 링크에서 볼 수 있다. https://github.com/woowacourse-precourse/kotlin-racingcar-6 GitHub - woowacourse-precourse/kotlin-racingcar-6: 자동차 경주 미션을 진행하는 저장소 자동차 경주 미션을 진행하는 저장소. Contribute to woowacourse-precourse/kotlin-racingcar-6 development by creating an account on GitHub. github.com 이전 미션과는 다르게 새로 추가된 요구사항들이 있었다. 요구사항은 아래와 같았다. 메서드의 indent depth 를 2까지만 허용한다. 함수(또는 메서드)..

[우테코 6기 - 안드로이드] 프리코스 1주차 숫자야구 회고와 오브젝트

23년 10월 19일 (목)부터 시작한 우아한 테크 코스의 프리코스가 4주가 지나고, 11월 15일(수) 에 끝이 났다. 저번 기수인 5기 때는 프리코스를 3주동안 3개의 미션을 진행했다고 했지만, 이번 6기에는 4주동안 4개의 미션을 진행했다. 현재 이 글을 쓰고 있는 시점은 우테코 프리코스가 모두 종료한 시점이다. 미션이 모두 종료했으니 이제 1주차 미션부터 회고록을 작성하면서 배운 내용과 경험, 감정들을 정리해보고자 한다. 우테코에 참여하게 된 계기는 학교 동기의 친구의 추천이었다. 우테코는 객체지향의 정수를 배울 수 있으며 프리코스 때부터 관련 설계에 대해 많은 것을 배울 수 있었다 했다. 그래서 그 친구가 추천한 책인 '오브젝트 코드로 이해하는 객체지향 설계' 를 읽으면서 프리코스를 진행했다. ..

[안드로이드] 수명 주기 인식요소가 뭔데? - Lifecycle, LifecycleOwner

수명 주기 인식 구성요소. 안드로이드 개발자 공식 문서에서 Lifecycle-Aware Components 을 이렇게 번역하고 있습니다. 그런데 Lifecycle-Aware 컴포넌트가 정확히 뭘까요? Lifecycle-Aware 컴포넌트란? 먼저 정의부터 바로 하겠습니다. Activity 나 Fragment 같은 다른 컴포넌트의 `Lifecycle` 이 변경될 때 이에 대응하는 컴포넌트. 이 컴포넌트는 `lifecycleOwner` 의 상태 변화를 `observe` 해서 필요한 작업을 스스로 할 수 있다. (이때 컴포넌트는 안드로이드 component 만을 의미하는 게 아닌, 자신의 역할을 할 수 있는 컴포넌트를 의미함) 일반적인 패턴에서는 액티비티나 프래그먼트의 lifecycle 메서드 내에서 데이터를..

Android/Theory 2023.10.18

안드로이드 테스트 코드를 배워보자 (3 - 1) 코루틴 테스트 - runTest, TestDispatcher, 디스패처 주입

이전 글에서 이어집니다. https://sh1mj1-log.tistory.com/175 안드로이드 테스트 코드를 배워보자 (1) - liveData 테스트, 비동기 테스트 기본 안드로이드 앱을 개발할 때 여러 기업에서, 프로젝트에서 테스트 코드를 작성하는 것은 중요하다고 말합니다. 아예 앱을 개발할 때 Test code 를 먼저 작성하는 경우도 있죠. 실제로 카카오에서 티 sh1mj1-log.tistory.com https://sh1mj1-log.tistory.com/176 안드로이드 테스트 코드를 배워보자 (2) - Room Unit Test https://sh1mj1-log.tistory.com/175 안드로이드 테스트 코드를 배워보자 (1) - liveData 테스트, 비동기 테스트 기본 안드로이드..

Android/테스팅 2023.10.13

안드로이드 테스트 코드를 배워보자 (1) liveData 테스트, 비동기 테스트 기본

안드로이드 앱을 개발할 때 여러 기업에서, 프로젝트에서 테스트 코드를 작성하는 것은 중요하다고 말합니다. 아예 앱을 개발할 때 Test code 를 먼저 작성하는 경우도 있죠. 실제로 카카오에서 티스토리 앱을 개발하시는 개발자 분의 기술 글에서 테스트를 해야 하는 이유를 이렇게 말하고 있습니다. (기술 글 출처) 개발 과정에서 문제를 미리 발견할 수 있다. 리팩토링을 안심하고 할 수 있다. 빠른 시간 내에 코드의 동작 방식과 결과를 확인할 수 있다. 좋은 테스트 코드를 연습하다 보면 자연스럽게 좋은 코드가 만들어진다. 의도한 대로 동작되는 것을 자신감 있게 말할 수 있다. 애자일 방법론의 도입! 로버트 C. 마틴은 이렇게 말했습니다. 기술 실천 방법 없이 애자일을 도입하려는 시도는 실패할 수밖에 없다.”..

Android/테스팅 2023.10.08