세상을 바꾸는 개발자

[이펙티브 코틀린] 코틀린의 안정성 - 예외를 활용해 코드에 제한을 걸어라 본문

안드로이드/Kotlin

[이펙티브 코틀린] 코틀린의 안정성 - 예외를 활용해 코드에 제한을 걸어라

헬창코딩 2023. 7. 8. 19:28

안드로이드는 자바와 코틀린 2가지 언어로 개발을 할 수 있지만 요즘 자바를 사용해서 개발하는 경우는 찾아보기 힘듬니다

저또한 코틀린을 사용합니다 하지만 사용하면서 잘 몰랐던 부분도 있고 한번도 써보지않는 편리고 좋은 기능들이 많이 존재합니다 그래서 이번에 복습할겸 이펙티브 코틀린의 내용으로 정리를 하려고 합니다.

안정성 - 예외를 활용해 코드에 제한을 걸어라

확실하게 어떠한 형태로 동작해야 하는 코드가 있다면, 예외를 활용해 제한을 걸어주는 것이 좋다

코틀린에서 코드 동작에 제한을 거는 여러가지 방법

  • require 블록 : 아규먼트를 제한 할 수 있다
  • check 블록 : 상태와 관련된 동작을 제한할 수 있다
  • assert 블록 : 어떤 것이 true인지 확인 할 수 있다. assert 블록은 테스트모드에서만 동작함
  • return 또는 throw 와 함께 사용하는 Evis 연산자

제한을 걸어주면 얻을 수 있는 장점

  • 제한을 걸면 문서를 읽지 않은 개발자도 문제를 확인 할 수 있다
  • 문제가 있을 경우에 함수가 예상하지 못한 동작을 하지 않고 예외를 throw한다
  • 코드가 어느정도 자체적으로 검사된다 따라서 이와 관련된 단위 테스트를 적게 할 수 있다
  • 스마트 캐스트 기능을 활용할 수 있게 되므로, 캐스트(타입변환)을 적게 할 수 있다

require 함수

  • 아규먼트(argument) 에 제한을 걸때 주로 require 함수를 많이 사용한다
  • require 함수는 제한을 확인하고, 제한을 만족하지 못하는 경우 예외를 throw한다 require 함수는 조건을 만족하지 못할때 무조건 IllegalArgumentException 을 발생 시키므로 제한을 무시할 수 없다
  • 주로 코드의 가장 첫번째줄에 배치된다

Check 함수

  • 어떤 객체가 미리 초기화되어 있어야만 처리를 하고 싶은 함수
  • 사용자가 로그인 했을때만 처리를 하는 함수
  • 객체를 사용할 수 있는 시점에 사용하고 싶은 함수
  • 상태가 올바른지 확인할때 사용한다
  • 일반적으로 require 함수 블록 뒤에 배치된다

assert 계열 함수

  • 단위테스트를 할때 많이 사용된다
  • 프로덕션 환경에서 오류가 발생하지 않는다(오류가 발생해도 알 수 가 없음)
  • 오류를 발생했을때 심각한 결과를 초래하는 함수라면 check 함수를 사용하자
  • Assert 계열의 함수는 코드를 자체 점검하며, 더 효율 적으로 테스트할 수 있게 해준다
  • 특정 상황이 아닌 모든 상황에 대한 테스트를 할 수 있다
  • 실행 시점에 정확하게 어떻게 되는지 확인 할 수 있다
  • 실제 코드가 더 빠른 시점에 실패하게 만든다 따라서 예상하지 못한 동작이 언제 어디서 실행되었는지 쉽게 찾을 수 있다

—> 코틀린에서는 위의 함수를 이용해서 검사를 했다면 자동으로 스마트 캐스팅이 일어난다

 

제한을 걸었을때 최종적으로 나타나는 효과

  • 제한을 더 쉽게 확인 할 수있다
  • 애플리케이션을 더 안정적으로 지킬 수 있다
  • 코드를 잘못 쓰는 상황을 막을 수 있다
  • 스마트 캐스팅을 활용할 수 있다

 

 

 

 

 

참고 : 이펙티브 코틀린

https://www.yes24.com/Product/Goods/106225986?pid=123487&cosemkid=go16425707805513414&gclid=Cj0KCQjwkqSlBhDaARIsAFJANkhCQTUD9TDNQIc0Vtl8O9OL8NFCy7dvHa-SLpewyWlUTlfoadfvjD0aAirIEALw_wcB

Comments