일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Go언어
- MVVM
- 개발자
- Rxjava 안드로이드
- Kotiln
- 안드로이드
- 안드로이드 개발자
- Firebase
- Java
- android compose
- Dev6
- 코틀린
- 알고리즘
- RxKotiln
- 잡담
- 이펙티브코틀린
- Flutter
- Swift 문법
- RxJava
- 코루틴
- 프로그래머스
- 반응형 프로그래밍
- Kotlin
- 이펙티브 코틀린
- 안드로이드 다이얼로그
- 안드로이드 클린아키텍쳐
- android
- 코딩테스트
- 안드로이드 컴포즈
- react
- Today
- Total
목록이펙티브코틀린 (2)
최데브는 오늘도 프로그래밍을 한다.
우리는 함수를 작성하다보면 결과를 만들어 낼 수 없을 때가(예외) 있다. 대표적으로 아래와 같은 상황이 생길 수 있다. 서버로부터 데이터를 받을때 인터넷 문제로 받아오지 못한 경우 조건에 맞는 요소들중 첫번쨰 요소를 가져오려고 했는데 조건에 맞는 요소가 하나도 없는 경우 ex) index 에러 json 파싱을 하려고 했는데 형식이 맞지 않아서 발생하는 오류 이런 상황을 처리할때 두 가지 매커니즘을 활용 할 수 있다. 제목처럼 null이나 Failure(라는 이름의 sealed 클래스)를 사용해서 처리 예외를 throw 두가지에는 중요한 차이가 있다. 예외를 throw 하는거부터 보자. 일단 예외는 정보를 전달하는 방법으로 사용해서는 안된다. 예외는 잘못된 특별한 상황을 나타낼때 사용해야한다. 그 이유는 ..
코틀린의 요소 중 일부는 상태를 가진다. 상태라는건 상황에 따라 값이 변화할 수 있는 것을 의미한다. 대표적으로 var 프로퍼티와 mutable 객체가 있다. 시간 변화에 따라 변하는 요소를 표현할 수 있는것은 유용하지만 여러가지 고려할 점이 생긴다. 1. 프로그램을 이해하고 상태 추척하는것이 어려워진다. 2. 가변성을 가지고 있으면 코드의 진행을 추론하기 어려워진다. 3. 멀티스레드 일때 동기화의 문제를 만날 수 있다. 4. 테스트하기가 어려워진다. 변경되는 값이 많을수록 여러 케이스를 테스트 해야한다. 5. 상태 변경이 일어나면 이 상태를 사용하고 있는 곳에 지속적으로 알려주는 번거로움이 생긴다. 예를 들면 이런 상황이다. suspend fun main() { val lock = Any() var n..