반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 오블완
- foreachindexed
- 코틀린
- filternotnull
- Token
- 객체지향
- 토큰
- Spring Boot
- JPQL
- 웹서버오류
- kotlin
- JPA
- Stream
- entity
- devpi
- 자바
- 서버실행실패
- java
- api인증
- portconflict
- 토큰기반인증
- map
- 스프링
- javamailsender
- 8080error
- JWT
- 티스토리챌린지
- Spring
- 스프링 부트
- sumof
Archives
- Today
- Total
DeveloPiano
[Kotlin] check() vs require(): if 문과의 비교 본문
반응형

Kotlin에서 check()와 require() 함수는 특정 조건이 만족되지 않을 경우 예외를 발생시키는 역할을 합니다. 두 함수 모두 입력 값 검증 및 상태 검증에 유용하며, if 문을 사용하는 것보다 간결하고 가독성이 좋은 코드를 작성하는 데 도움이 됩니다.
1. check()
check() 함수는 객체의 상태(state)를 검증할 때 사용됩니다. 주어진 조건이 false이면 IllegalStateException을 발생시킵니다.
사용 예시 (check() vs if)
fun processData(data: List<String>) {
check(data.isNotEmpty()) { "데이터 리스트가 비어 있습니다." }
println("데이터 처리 중: $data")
}
위 코드는 data가 비어 있으면 IllegalStateException을 발생시키며, 그렇지 않으면 데이터를 처리합니다.
if 문으로 작성한 경우
fun processData(data: List<String>) {
if (data.isEmpty()) {
throw IllegalStateException("데이터 리스트가 비어 있습니다.")
}
println("데이터 처리 중: $data")
}
비교
- check()를 사용하면 한 줄로 간결하게 상태 검증을 할 수 있습니다.
- if 문을 사용하는 경우 예외를 명시적으로 던져야 하므로 코드가 길어질 수 있습니다.
2. require()
require() 함수는 함수의 입력 값(validation)을 검증할 때 사용됩니다. 조건이 false이면 IllegalArgumentException을 발생시킵니다.
사용 예시 (require() vs if)
fun setAge(age: Int) {
require(age > 0) { "나이는 0보다 커야 합니다." }
println("나이 설정 완료: $age")
}
위 코드는 age가 0 이하이면 IllegalArgumentException을 발생시키고, 그렇지 않으면 정상적으로 값을 처리합니다.
if 문으로 작성한 경우
fun setAge(age: Int) {
if (age <= 0) {
throw IllegalArgumentException("나이는 0보다 커야 합니다.")
}
println("나이 설정 완료: $age")
}
비교
- require()를 사용하면 입력 검증을 더욱 간결하게 처리할 수 있습니다.
- if 문을 사용하면 코드가 길어지고, 명시적으로 예외를 던져야 합니다.
3. check() vs require() 비교
함수 | 주 사용 목적 | 예외 유형 | 사용 예 |
check() | 객체 상태 검증 | IllegalStateException | "이 객체가 특정 상태인지 확인하고 싶다" |
require() | 입력 값 검증 | IllegalArgumentException | "이 함수의 매개변수가 올바른 값인지 확인하고 싶다" |
check()와 require()의 차이
class User(private val name: String, private val age: Int) {
init {
require(name.isNotBlank()) { "이름은 빈 값일 수 없습니다." } // 입력 검증
require(age > 0) { "나이는 0보다 커야 합니다." } // 입력 검증
}
fun activate() {
check(this.age >= 18) { "사용자는 18세 이상이어야 합니다." } // 상태 검증
}
}
- require() → 객체가 생성될 때 입력 값 검증
- check() → 메서드가 호출될 때 객체 상태 검증
4. 요약
- check(): 객체의 상태를 검증하며, 실패 시 IllegalStateException 발생
- require(): 입력 값 검증에 사용되며, 실패 시 IllegalArgumentException 발생
- if 문을 사용할 수도 있지만, check()와 require()를 사용하면 코드가 간결하고 가독성이 좋아짐
📌 권장 패턴
- 함수의 매개변수 검증에는 require()
- 객체의 상태 검증에는 check()
Kotlin에서 check()와 require()를 적절히 활용하면 더 깔끔하고 안전한 코드를 작성할 수 있습니다. if 문과 비교했을 때, 더 명확한 의도를 전달할 수 있으므로 적극적으로 활용해 보세요!
반응형
'Develop > Kotlin' 카테고리의 다른 글
[Kotlin] indices 속성 완벽 가이드 (1) | 2025.03.03 |
---|---|
[Kotlin] sumOf 함수 (0) | 2025.02.26 |
[Kotlin] Map과 MutableMap : 읽기 전용과 변경 가능한 Map의 차이점 (0) | 2024.11.14 |
[Kotlin] Null Safety : ?와 Nullable 타입 (0) | 2024.09.02 |
[Kotlin] it : 람다 표현식에서의 편리한 매개변수 사용법 (3) | 2024.09.02 |