본문 바로가기
JAVA & KOTLIN

[KOTLIN] Kotlin의 check와 require

by nozee 2024. 12. 14.
반응형

kotlin

 

Kotlin에서는 코드의 안정성을 높이기 위해 다양한 검증 도구를 제공한다.

그중 check와 require는 특정 조건을 검증할 때 자주 사용하는 함수다.

두 함수는 비슷해 보이지만, 용도와 발생시키는 예외가 다르다.

이 글에서는 check와 require의 차이점과 사용 방법을 간단히 정리한다.

 

checkNotNull, requireNotNull 로 null 체크를 할 수 있으며 이후 null이 아니라고 가정한다.
따라서 스마트 캐스트를 사용할 수 있다.

 

check 함수

check는 코드 실행 중 내부 상태를 검증할 때 사용한다.

개발자가 의도한 상태가 유지되고 있는지 확인하며, 조건이 만족되지 않으면 IllegalStateException을 발생시킨다.

fun process(input: String?) {
    check(input != null) { "Input should not be null" }
    println("Processing: $input")
}

위 코드에서 check는 input이 null인지 확인하고, null일 경우 예외를 발생시킨다. 메시지를 설정해 오류의 원인을 명확히 전달할 수도 있다.

 

특징:

  • 주로 내부 상태가 올바른지 확인할 때 사용한다.
  • 조건이 실패하면 IllegalStateException이 발생한다.
  • 비즈니스 로직의 특정 상태를 확인하는 데 적합하다.

 

require 함수

require는 함수나 메서드의 입력값 검증에 사용한다.

주로 입력값이 특정 조건을 만족하는지 확인하며, 조건이 실패하면 IllegalArgumentException을 발생시킨다.

fun divide(a: Int, b: Int): Int {
    require(b != 0) { "Divisor must not be zero" }
    return a / b
}

위 코드에서 require는 b가 0인지 확인하고, 0이면 예외를 발생시킨다.

이를 통해 잘못된 입력값으로 인한 문제를 방지할 수 있다.

 

특징:

  • 함수의 입력값이 유효한지 검증할 때 사용한다.
  • 조건이 실패하면 IllegalArgumentException이 발생한다.
  • 함수나 메서드를 호출할 때 올바른 값을 전달했는지 확인하는 데 적합하다.

 

check와 require의 차이점

항목 check require
검증 대상 내부 상태 확인 입력값 확인
발생 예외 IllegalStateException 발생 IllegalArgumentException 발생
주 사용 사례 내부 로직 검증 함수 입력값 검증

check는 프로그램 내부 상태를 점검하는 데 사용하고, require는 함수나 메서드에 전달된 입력값을 확인할 때 사용한다.

 

 

사용 시 주의사항

  • 조건을 명확히 작성할 것: 검증 조건은 간결하고 직관적으로 작성해 오류 발생 시 문제를 빠르게 파악할 수 있도록 한다.
  • 적절한 메시지 제공: 예외가 발생할 때 오류의 원인을 명확히 전달하기 위해 메시지를 잘 작성해야 한다.
  • 복잡한 조건은 함수로 분리: 코드의 가독성을 높이기 위해 복잡한 검증 로직은 별도 함수로 작성하는 것이 좋다.
fun validateUser(user: User) {
    require(user.age >= 18) { "User must be at least 18 years old" }
    check(user.isActive) { "User must be active" }
}

 

 

마무리

check와 require는 Kotlin에서 조건 검증을 간결하게 처리할 수 있는 유용한 도구다.

check는 내부 상태를, require는 함수 입력값을 검증하는 데 적합하다.

두 함수의 차이를 잘 이해하고 적절히 활용하면 코드의 안정성과 가독성을 모두 높일 수 있다.

 

긴 글 읽어 주셔서 감사합니다.
 
반응형