본문 바로가기
공부/이펙티브코틀린

아이템 3 - 최대한 플래폼 타입을 사용하지 말라

by 띵커베르 2024. 3. 31.
728x90
  • 코틀린에서는 null-safety 매커니즘으로 인해 NPE 를 거의 찾아보기 힘들다.
    • null 관련 오류를 방지하기 위한 코틀린의 핵심 기능 중 하나
    • 타입 시스템을 통해 null 참조를 엄격히 제어하여, 가능한 실행 시간 오류를 컴파일 시간에 잡아낼 수 있게 한다.
      • 코틀린에서 변수를 선언할 때, 변수가 null 을 받을 수 있는지 아닌지를 명시적으로 선언해야 한다.
      • 변수 타입 뒤에 ? 를 붙이면 그 변수는 null 값을 가질 수 있다고 선언하는 것
  • 코틀린은 자바 등의 다른 프로그래밍 언어에서 넘어온 타입들을 특수하게 다룹니다. 이러한 타입을 플랫폼 타입 이라고 부른다.
    • 자바와 코틀린 사이의 상호 운용성을 위헤 도입된 개념
    • 코틀린은 자체적으로 nill 안정성을 엄격하게 관리하지만, 자바 코드는 코틀린처럼 null 가능성을 명시적으로 표현하지 않는다.
    • 때문에 자바 코트로부터 가져온 타입의 null 가능성에 대해 코틀린 컴파일러가 알 수 없는 경우가 있다.
    • 이런 타입들을 플랫폼 타입이라고 한다.
    • 플랫폼 타입은 코틀린에서 null 검사를 강제하지 않는다. 즉 개발자가 nullable 로 처리할지, non-null 로 처리할지 결정할 수 있다.
    • 이는 자바와 코틀린 간의 상호운용성을 유지하면서도, 코틀린의 타입시스템 내에서 최대한 유연하게 작업할 수 잇게 해준다.
  • 자바를 코틀린과 함께 사용할 때, 자바 코드를 직접 조작할 수 있다면, 가능한 @Nullable @NotNull 어노테이션을 붙여서 사용하기 바랍니다.
  • inferred 타입(추론된 타입)
    • 프로그래밍 언에에서 변수나 표현식의 타입이 코드를 작성하는 시점에 명시적으로 선언되지 않고, 컴파일러에 의해 자동으로 결졍되는 타입
    • ex) val name = " injin Jeong" // String 타입이 추론

 

 


정리

  • 다른 프로그래밍 언어에서 와서 nullable 여부를 알 수 없는 타입을 플랫폼 타입이라고 부릅니다.
  • NPE 문제 등으로 인하여 위험하고, 이를 활용하는 곳까지 영향을 줄 수 있는 위험한 코드이다.
  • 이런 코드를 사용하고 있다면 빨리 해당 코드를 제거하는 것이 좋다.
  • 연결되어 있는 자바 생성자, 메서드, 필드에 nullable 여부를 지정하는 어노테이션을 활용하는 것도 좋다. 이러한 정보는 코틀린 개발자뿐만 아니라 자바 개발자에게도 유용한 정보이다.
728x90

댓글