flutter

[Flutter/Dart] final & const 차이점

DDDIDE 2024. 4. 22. 09:54
요약
  • final과 const는 변수의 값을 변경하지 못하는 '상수' 선언에 사용한다.
  • 차이점은 '값을 결정하는 시점' 이다.
    final : 런타임 시점에 값을 결정
    const: 컴파일 시점에 값을 결정
  • 구분이 어렵다면, 대부분 final을 사용하고 진짜 값이 절대 변하지 않을 시에 const 사용하기
final DateTime rightNow = DateTime.now();
const String Name = 'HongGileDong';

 

설명

 

Dart는 '컴파일 언어'이다.
우리가 작성한 코드를 컴퓨터가 이해하기 위해서는 프로그래밍 언어를 기계어로 바꾸는 과정이 필요하다. 코드를 기계어로 번역하는 방식은 언어에 따라 다른데 컴파일 언어, 인터프리터 언어 두 가지가 있다. 컴파일 언어는 프로그래밍 언어를 한번에 기계어로 변환하여 실행 파일을 만들고, 인터프리터 언어는 코드를 한줄씩 해석하며 실행한다. 

 Dart는 컴파일 언어이므로, 소스 코드가 기계 코드로 한번에 변환하는 시점이 존재한다.  그 시점이 컴파일 타임이고, 그 이후 프로그램을 실행하는 시점이 런타임 타임이다. const와 final은 값이 고정되어있는 '상수'이지만, 값을 결정하는 이 시점이 다르다는 것이다. 

프로그램이 실행되고 있는 시점에 함수가 실행되고, 당시의 상태값이 변수에 할당되어 상수 역할을 해야하는 상황이 존재한다. 그 상황에서 final을 사용한다. 예를 들면 DateTime.now()은 ' 코드가 실행되는 시점의 시간을 가져오는 명령어' 이기 때문에 final을 사용해야한다. 

그 외에도 const는 좀 더 성능 최적화 및 메모리 절약에 기여할 수 있다.