Null Safety

David·2024년 3월 7일
0

Dart

목록 보기
1/4

Null Safety

Null이란 무엇인가

Null은 값이 없음을 나타내는 개념입니다. 변수나 객체가 아무런 값을 가지고 있지 않을 때, 즉 참조가 어떤 객체도 가리키지 않을 때 null을 사용하여 이를 표현합니다.

Null이 가능한 타입

프로그래밍 언어에서는 null을 허용하는 타입과 그렇지 않은 타입을 구분합니다.

예) int i = null; // error
int? i = null; // OK

기존 타입 시스템

전통적인 타입 시스템에서는 null이 가능한 타입과 그렇지 않은 타입 사이의 구분이 명확하지 않았습니다. 그러나 프로그래밍이 점점 발달하면서 null의 개념이 도입되었고 지금은 널리 사용되고 있습니다.

Nullable

Nullable 타입은 특정 타입이 null 값을 가질 수 있음을 명시적으로 표현합니다. 예를 들어, Kotlin이나 Swift와 같은 언어에서는 변수 뒤에 ?를 붙여 해당 변수가 null을 가질 수 있는 nullable 타입임을 나타냅니다.

??, !, ?.

  • ?? 연산자는 null 병합 연산자로서, 표현식이 null이 아니면 그 값을 반환하고, null이면 오른쪽에 지정된 기본값을 반환합니다.
  • ! 연산자는 null이 아님을 단언하는 연산자로, 변수 뒤에 사용되어 해당 변수가 null이 아님을 컴파일러에게 알립니다.
  • ?. 연산자는 안전 호출 연산자로, 객체가 null이 아닐 경우에만 메서드나 속성에 접근하게 해주고, null일 경우에는 null을 반환합니다.

Null Safety의 장점

  • 런타임 에러 감소: null 관련 에러를 컴파일 시간에 잡을 수 있어 런타임에 발생할 수 있는 예외를 줄입니다.
  • 코드 안정성 향상: null 체크를 강제함으로써 더 안전한 코드를 작성할 수 있습니다.
  • 개발자 의도 명확히 표현: null 가능 여부를 타입 시스템을 통해 명확히 표현함으로써 코드의 의도를 더 잘 전달할 수 있습니다.

Null Safety의 주의점

  • 사용 중인 외부 라이브러리도 모두 널 안전성을 지원해야 합니다.
  • ?,!,?., late 등의 새로운 연산자나 키워드는 초보자에게 어렵게 느껴질 수 있습니다. (러닝커브의 단점)
  • 사용 중인 프로젝트에 갑자기 컴파일 에러가 발생할 수 있고, 이를 수정하기 위한 추가 작업이 필요합니다.
profile
Flutter에 관심있습니다.

0개의 댓글