Develop/Kotlin
[Kotlin] check() vs require(): if 문과의 비교
DevPi
2025. 1. 31. 16:29
반응형
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 문과 비교했을 때, 더 명확한 의도를 전달할 수 있으므로 적극적으로 활용해 보세요!
반응형