DeveloPiano

[Kotlin] check() vs require(): if 문과의 비교 본문

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 문과 비교했을 때, 더 명확한 의도를 전달할 수 있으므로 적극적으로 활용해 보세요!

 

반응형