일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 디자인패턴
- 깃
- 유닛테스트
- git
- Kotlin
- 제한함수
- 컴포즈
- 자료구조
- Jetpack
- Room
- 단위테스트
- 파이썬
- Python
- 공격적 프로그래밍
- Android
- 코딩테스트
- 안드로이드
- ViewModel
- rxjava
- 안드로이드 디자인패턴
- Observable
- MVVM
- Di
- 안정성
- 코틀린
- 테스트의 장점
- dagger2
- UnitTest
- mock
- compose
Archives
- Today
- Total
세상을 바꾸는 개발자
[이펙티브 코틀린] 코틀린의 안정성 - 예외를 활용해 코드에 제한을 걸어라 본문
안드로이드는 자바와 코틀린 2가지 언어로 개발을 할 수 있지만 요즘 자바를 사용해서 개발하는 경우는 찾아보기 힘듬니다
저또한 코틀린을 사용합니다 하지만 사용하면서 잘 몰랐던 부분도 있고 한번도 써보지않는 편리고 좋은 기능들이 많이 존재합니다 그래서 이번에 복습할겸 이펙티브 코틀린의 내용으로 정리를 하려고 합니다.
안정성 - 예외를 활용해 코드에 제한을 걸어라
확실하게 어떠한 형태로 동작해야 하는 코드가 있다면, 예외를 활용해 제한을 걸어주는 것이 좋다
코틀린에서 코드 동작에 제한을 거는 여러가지 방법
- require 블록 : 아규먼트를 제한 할 수 있다
- check 블록 : 상태와 관련된 동작을 제한할 수 있다
- assert 블록 : 어떤 것이 true인지 확인 할 수 있다. assert 블록은 테스트모드에서만 동작함
- return 또는 throw 와 함께 사용하는 Evis 연산자
제한을 걸어주면 얻을 수 있는 장점
- 제한을 걸면 문서를 읽지 않은 개발자도 문제를 확인 할 수 있다
- 문제가 있을 경우에 함수가 예상하지 못한 동작을 하지 않고 예외를 throw한다
- 코드가 어느정도 자체적으로 검사된다 따라서 이와 관련된 단위 테스트를 적게 할 수 있다
- 스마트 캐스트 기능을 활용할 수 있게 되므로, 캐스트(타입변환)을 적게 할 수 있다
require 함수
- 아규먼트(argument) 에 제한을 걸때 주로 require 함수를 많이 사용한다
- require 함수는 제한을 확인하고, 제한을 만족하지 못하는 경우 예외를 throw한다 require 함수는 조건을 만족하지 못할때 무조건 IllegalArgumentException 을 발생 시키므로 제한을 무시할 수 없다
- 주로 코드의 가장 첫번째줄에 배치된다
Check 함수
- 어떤 객체가 미리 초기화되어 있어야만 처리를 하고 싶은 함수
- 사용자가 로그인 했을때만 처리를 하는 함수
- 객체를 사용할 수 있는 시점에 사용하고 싶은 함수
- 상태가 올바른지 확인할때 사용한다
- 일반적으로 require 함수 블록 뒤에 배치된다
assert 계열 함수
- 단위테스트를 할때 많이 사용된다
- 프로덕션 환경에서 오류가 발생하지 않는다(오류가 발생해도 알 수 가 없음)
- 오류를 발생했을때 심각한 결과를 초래하는 함수라면 check 함수를 사용하자
- Assert 계열의 함수는 코드를 자체 점검하며, 더 효율 적으로 테스트할 수 있게 해준다
- 특정 상황이 아닌 모든 상황에 대한 테스트를 할 수 있다
- 실행 시점에 정확하게 어떻게 되는지 확인 할 수 있다
- 실제 코드가 더 빠른 시점에 실패하게 만든다 따라서 예상하지 못한 동작이 언제 어디서 실행되었는지 쉽게 찾을 수 있다
—> 코틀린에서는 위의 함수를 이용해서 검사를 했다면 자동으로 스마트 캐스팅이 일어난다
제한을 걸었을때 최종적으로 나타나는 효과
- 제한을 더 쉽게 확인 할 수있다
- 애플리케이션을 더 안정적으로 지킬 수 있다
- 코드를 잘못 쓰는 상황을 막을 수 있다
- 스마트 캐스팅을 활용할 수 있다
참고 : 이펙티브 코틀린
'안드로이드 > Kotlin' 카테고리의 다른 글
[이펙티브 코틀린] 코틀린의 안정성 - 변수의 스코프를 최소화 하라 (0) | 2023.07.11 |
---|---|
[이펙티브 코틀린] 코틀린의 안정성 - 가변성을 제한하라 (0) | 2023.07.09 |
[Kotlin] Assignment (=) , get() 의 차이 (0) | 2023.07.08 |
[Android Kotlin] 코틀린 날짜 구하기 (1) | 2021.09.15 |
[Android Kotlin] 둥둥떠다니는 최상위 뷰(FloatingView) 만들기 (4) | 2021.06.18 |
Comments