분류 전체보기 154

[Kotlin] 함수와 변수 기초

Kotlin in Action 을 공부하고 Effective kotlin 의 내용을 조금 참조하여 정리한 글입니다. 간단한 Hello, World! 살펴보기 fun main(args: Array) { println("Hello, World!") } 매우 간단한 코드이다. 이 코드만으로도, 자바와 다른 코틀린 문법과 특성을 찾을 수 있다. `fun` 키워드를 사용하여 함수를 선언한다. 파라미터 이름 뒤에 그 파라미터의 타입을 쓴다. 함수를 최상위 수준에 정의할 수 있다. 자바와 달리 꼭 클래스 안에 함수를 넣을 필요가 없다. 배열도 일반적인 클래스와 똑같이 취급한다.(`Array`의 형태로) 자바와 달리 배열 처리를 위한 문법이 따로 존재하지 않는다. 자바의 `System.out.println` 대신, `..

Kotlin 2023.12.02

[우테코 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주차 미션부터 회고록을 작성하면서 배운 내용과 경험, 감정들을 정리해보고자 한다. 우테코에 참여하게 된 계기는 학교 동기의 친구의 추천이었다. 우테코는 객체지향의 정수를 배울 수 있으며 프리코스 때부터 관련 설계에 대해 많은 것을 배울 수 있었다 했다. 그래서 그 친구가 추천한 책인 '오브젝트 코드로 이해하는 객체지향 설계' 를 읽으면서 프리코스를 진행했다. ..

MVC 패턴을 다시 공부해보자

우아한 테크 코스의 프리코스에서 숫자 야구 게임 구현 단계를 진행하고 있었습니다. 이 때 따로 GUI 는 없고 콘솔을 통해서 입력과 출력을 받고 있었습니다. 저는 먼저 한 클래스에 모든 구현을 때려 넣은 후에 리팩토링하면서 각 객체에게 역할과 책임을 분리했습니다. 그런데 프리코스 커뮤니티에서 MVC 패턴에 대한 이야기가 나오더라구요..? 저는 안드로이드 프로젝트만 해왔기 때문에 당연히 따로 View 가 있는 패턴(MVC 나 MVVM 과 같이)을 사용할 생각을 못했었는데 말이죠. 그래서 MVC 패턴을 적용해서 구현한 코드를 리팩토링하려고 했습니다. 그런데 갑자기 조금씩 헷갈리더라군요.. 그래서 MVC 패턴을 어떤 프레임워크에 국한되지 않도록, 조금만 더 자세히 알아보려고 합니다. 참고로 이전에 MVC, M..

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

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

Android/Theory 2023.10.18

안드로이드 테스팅 (3-3) 코루틴 테스트 - viewModel 에서 디스패처 만들면?, DipatcherProvider, pauseDispatcher, resumeDispatcher

이전 글에서 이어집니다 https://sh1mj1-log.tistory.com/175 https://sh1mj1-log.tistory.com/176 https://sh1mj1-log.tistory.com/177 https://sh1mj1-log.tistory.com/178 안드로이드 테스트 코드를 배워보자 (3 - 2) - viewModelScope.launch 에서 테스트, 메인 디스패처 설정, 이전 글에서 이어집니다. https://sh1mj1-log.tistory.com/175 안드로이드 테스트 코드를 배워보자 (1) - liveData 테스트, 비동기 테스트 기본 안드로이드 앱을 개발할 때 여러 기업에서, 프로젝트에서 테스 sh1mj1-log.tistory.com 먼저 테스트할 ViewModel ..

Android/테스팅 2023.10.17

안드로이드 테스트 코드를 배워보자 (3 - 2) 코루틴 테스트 - viewModelScope.launch 에서 테스트, 메인 디스패처 설정,

이전 글에서 이어집니다. 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.17

안드로이드 테스트 코드를 배워보자 (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

안드로이드 테스트 코드를 배워보자 (2) Room Unit Test

https://sh1mj1-log.tistory.com/175 안드로이드 테스트 코드를 배워보자 (1) - liveData 테스트, 비동기 테스트 기본 안드로이드 앱을 개발할 때 여러 기업에서, 프로젝트에서 테스트 코드를 작성하는 것은 중요하다고 말합니다. 아예 앱을 개발할 때 Test code 를 먼저 작성하는 경우도 있죠. 실제로 카카오에서 티 sh1mj1-log.tistory.com 이전 글에서 이어집니다. Room Unit Test - ViewModel, LiveData 등 사용 Room DB 는 안드로이드 Jetpack Components 입니다. 그러므로 안드로이드 종속성이 필요합니다. 안드로이드 개발자 문서 - Room 지속성 라이브러리는 SQLite에 추상화 계층을 제공하여 SQLite를 ..

Android/테스팅 2023.10.10