일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 코루틴
- 프로그래머스
- 일상
- 알고리즘
- react
- 코틀린
- 이펙티브 코틀린
- swift map
- 개발자
- MVVM
- RxJava
- Swift 문법
- android compose
- 안드로이드 다이얼로그
- 반응형 프로그래밍
- 잡담
- Flutter
- Rxjava 안드로이드
- Java
- Go언어
- Firebase
- Dev6
- 코딩테스트
- android
- RxKotiln
- 이펙티브코틀린
- 안드로이드 컴포즈
- 안드로이드
- Kotiln
- 안드로이드 개발자
- Today
- Total
목록전체 글 (180)
최데브는 오늘도 프로그래밍을 한다.
우리는 함수를 작성하다보면 결과를 만들어 낼 수 없을 때가(예외) 있다. 대표적으로 아래와 같은 상황이 생길 수 있다. 서버로부터 데이터를 받을때 인터넷 문제로 받아오지 못한 경우 조건에 맞는 요소들중 첫번쨰 요소를 가져오려고 했는데 조건에 맞는 요소가 하나도 없는 경우 ex) index 에러 json 파싱을 하려고 했는데 형식이 맞지 않아서 발생하는 오류 이런 상황을 처리할때 두 가지 매커니즘을 활용 할 수 있다. 제목처럼 null이나 Failure(라는 이름의 sealed 클래스)를 사용해서 처리 예외를 throw 두가지에는 중요한 차이가 있다. 예외를 throw 하는거부터 보자. 일단 예외는 정보를 전달하는 방법으로 사용해서는 안된다. 예외는 잘못된 특별한 상황을 나타낼때 사용해야한다. 그 이유는 ..
프로젝트를 하다가 간만에 Viewpager 를 쓸일이 생겼다. 뷰페이저 자체가 예전부터 있었다보니 여러가지 방법으로 구현하는 방식이 있는데 이번에 나는 ViewPager2 와 FragmentStateAdapter 를 이용해서 만들어 보기로 했다. 먼저 ViewPager 가 지원중단되고 ViewPager2 로 몇년전에 넘어가게 됐는데 알아보는김에 왜 바뀌게 됐는지도 한번 알아보자. 대표적인 ViewPager 의 문제는 1. 리사이클러뷰에 뷰페이저를 집어 넣을때 발생한다. 뷰페이저는 PagerAdapter 기반으로 구성됐는데 스크롤을 할때마다 instantiateltem() 과 destroyItem() 메소드가 호출되면서 스크롤이 버벅거리는 문제가 있었다. * instantiateltem() : 화면에 표시..
확실히 어떻게 동작해야하는 코드가 있으면 예외를 활용해서 제약을 걸어주는게 좋을때가 있다. 코틀린에는 대표적으로 1. require : 아규먼트와 관련된 예측을 정의할때 상용하는 방법 숫자를 아규먼트로 받아서 팩토리얼을 계산하면 양의 정수만 받아야할때 좌표를 아규먼트로 받아서 클러스터를 찾을 때 비엉 있지 않은 좌표 목록을 사용할때 사용자로부터 이메일 주소를 입력받을 때 값이 입력됐는지, 이메일 형식이 바른지 확인할때 2. check : 상태와 관련된 예측을 정의할때 사용하는 방법 어떤 객체가 미리 초기화되어 있으어만 처리가 되게 하고 싶은 함수에 사용 사용자가 로그인 했을 때만 처리를 하게 하고 싶은 함수에 사용 객체를 사용할 수 있는 시점에 사용하고 싶은 함수인지 체크할때 사용 일반적으로 requir..
코틀린은 타입추론(type inference) 를 제공한다. 자바 10부터는 코틀린처럼 타입추론을 제공하지만 코틀린에 비해서는 제약이 많다. 아무튼 타입 추론을 사용할때 주의할 점들이 있는데 할당 할때 inferred 타입은 정확하게 오른쪽에 있는 피연산자에 맞게 설정된다는 것을 기억해야 한다. 일반적으로는 아래와 같이 open class Drink class Water: Drink() fun main() { var drink = Water() drink = Drink() // 타입에러 } 하지만 이건 open class Drink class Water: Drink() fun main() { var drink : Drink = Water() // 타입 명시 drink = Drink() } 타입 명시를 해..