하루플스토리
Home
  • 전체보기 (253)
    • 개발 (104)
      • Android (68)
      • IOS (1)
      • 코딩테스트 (34)
      • 딥러닝 (1)
    • 블로그 (9)
      • 공지사항 (4)
      • 이슈, 유머 (5)
    • 일상 (17)
      • 일상 (9)
      • 전자제품 (7)
      • 사진 (1)
    • 메이플 (120)
      • 메이플스토리 (120)
Home
  • 전체보기 (253)
    • 개발 (104)
      • Android (68)
      • IOS (1)
      • 코딩테스트 (34)
      • 딥러닝 (1)
    • 블로그 (9)
      • 공지사항 (4)
      • 이슈, 유머 (5)
    • 일상 (17)
      • 일상 (9)
      • 전자제품 (7)
      • 사진 (1)
    • 메이플 (120)
      • 메이플스토리 (120)
블로그 내 검색
Github

하루플스토리

안드로이드 개발자 하루플 입니다 GitHub 놀러와주세요!😊

  • 개발/Android

    이펙티브 코틀린 : 예외를 활용해 코드에 제한을 걸어라

    2023. 2. 19.

    by. 하루플스토리

    예외를 활용해 코드에 제한을 걸어라

    • 확실하게 어떤 형태로 동작해야하는 코드가 있다면 예외를 활용해 제한을 걸자
    • 제한을 걸면 문서를 읽지 않은 개발자도 문제를 확인할 수 있다.
    • 문제가 있을 경우 함수가 예상하지 못한 동작을 하지 않고 예외를 throw 한다. 예상하지 못한 동작을 하는건 예외를 throw하는 것보다 굉장히 위험하며, 상태를 관리하는 것이 굉장히 힘들다.
    • Argument
      • 일반적으로 제한 걸때는 argument를 사용한다.
      • require함수로 제한을 확인하고 제한을 만족하지 못할 경우 예외를 throw 한다.
      • require 함수는 조건을 만족하지 못할 때 무조건 IllegalArgument Exception을 발생시키므로 제한을 무시할 수 없다.
    • check
      • check 함수는 require과 비슷하지만 지정된 예측을 만족하지 못할 때 IllegalStateException을 throw 한다.
      • 상태가 올바른지 확인할 때 사용한다.
      • 사용자가 코드를 제대로 사용할거라고 믿고 있는 것 보다는 항상 문제 상황을 예측하고, 문제 상황에 예외를 throw하는 것이 좋다.
    • assert
      • 단위테스트는 구현의 정확성을 확인하는 가장 기본적인 방법이다.
      • assert함수는 프로덕션 환경에서는 오류가 발생하지 않고 테스트 할 때만 활성화 되므로 오류가 발생해도 사용자가 알아차릴 수 없다.
      • 이 코드가 정말 심각한 오류라면 check 함수를 사용하는게 좋다.

    결과 부족이 발생할 경우 Null과 Failure를 사용해라

    • 함수가 원하는 결과를 만들어 낼 수 없을 때가 있다.
    • 이럴 때 null 또는 Failure를 리턴하거나 예외를 throw 한다.
    • 여기서 예외를 throw 하는 방법은 좋지 않다. 예외는 정보를 전달하는 방법으로 사용해서는 안된다. 잘못된 특별한 상황을 나타내야 한다.
    • 충분히 예측할 수 있는 범위의 오류는 null 과 failure를 사용하고, 예측하기 어려운 예외적인 범위의 오류는 예외를 throw 해서 처리하는게 좋다.
    저작자표시 비영리 동일조건 (새창열림)

    '개발 > Android' 카테고리의 다른 글

    [Kotlin] 안드로이드스튜디오 BroadcastReceiver  (0) 2023.02.26
    [Kotlin] 안드로이드스튜디오 AlramManager 기능 및 사용방법  (0) 2023.02.25
    이펙티브 코틀린 : 변수의 스코프를 최소화하라  (0) 2023.02.18
    이펙티브 코틀린 : 1부 좋은 코드  (0) 2023.02.06
    [Android] 카카오 로그인을 구현하면서 경험한 시행착오  (0) 2023.01.29

    댓글

    관련글

    • [Kotlin] 안드로이드스튜디오 BroadcastReceiver 2023.02.26
    • [Kotlin] 안드로이드스튜디오 AlramManager 기능 및 사용방법 2023.02.25
    • 이펙티브 코틀린 : 변수의 스코프를 최소화하라 2023.02.18
    • 이펙티브 코틀린 : 1부 좋은 코드 2023.02.06
    맨 위로
전체 글 보기
Tistory 로그인
Tistory 로그아웃
로그아웃 글쓰기 관리

Today

Total

Powered by ⓒ Kakao Corp.

Designed by Nana
블로그 이미지
하루플스토리

티스토리툴바