서론
Dart를 사용할 때, 변수를 선언할 때 final과 const는 자주 사용되는 것을 볼 수 있습니다. 이번 글에서는 두 개의 차이점과 목적을 제대로 바로잡고, Flutter 앱을 효율적으로 제작할 수 있는 사용법에 대해서 알아보겠습니다.
fianl 이해하기
final
은 한 번 값이 주입된 변수에 다시 변경될 수 없습니다. 만약 final로 변수가 선언되면, 변수의 선언부나 클래스의 생성자로 부터 한 번만 값이 주입될 수 있습니다.
class Circle {
final double radius;
Circle(this.radius);
double calculateArea() {
return 3.14 * radius * radius;
}
}
void main() {
final Circle circle = Circle(5.0);
print(circle.calculateArea()); // Output: 78.5
// Attempting to reassign a final variable throws a compile-time error
circle = Circle(10.0); // Error: The final variable 'circle' can't be assigned a value.
}
final의 장점
final을 사용하면 다음과 같은 장점을 얻을 수 있습니다.
- 값이 변경되는 것이 보장
만약 앱이 실행되고 일정한 값을 유지할 경우에는 final변수가 유용할 수 있습니다. 개발자에게 데이터의 무결성을 보장하고 의도하지 않은 수정을 방지할 수 있습니다. - 성능 최적화
일반적으로 final변수는 Dart 컴파일러에 의해 최적화되어 일반 변수보다 성능이 향상될 수 있습니다. 한 번 할당하면 런타임 검사 없이 바로 메모리에 저장됩니다. - 스레드 안정성
본질적으로 값이 변경될 수 없는 final변수는 스레드 안정성이 있고, 동시성 프로그래밍에 적합합니다.
final의 효율적인 사용법
- 초기화 후에 값이 변경되지 않을 경우에 사용합니다.
- 변수를 선언하거나 클래스 생성자 내에서 final변수를 초기화합니다.
- final변수에 값을 재할당을 하는 것은 하지말아야합니다.
const 이해하기
const 키워드는 컴파일 타임에 선언되는 변수입니다. final과 달리, const 변수는 변수 선언과 함께 값이 할당되어야합니다.
void main() {
const double pi = 3.14;
const int daysInWeek = 7;
print(pi); // Output: 3.14
print(daysInWeek); // Output: 7
// Attempting to reassign a const variable throws a compile-time error
pi = 3.14159; // Error: Setter not found: 'pi'.
}
const의 장점
- 성능 최적화
컴파일 타임에 변수가 정해지므로 런타임에서 성능이 향상될 수 밖에 없습니다. - 메모리 효율성
컴파일 타임에 변수가 정해지고, 단일 메모리 공간에 저장이 되기 떄문에 메모리 사용량을 줄일 수 있습니다. - 코드 최적화
const를 사용하는 것은 중복된 계산을 줄여줄 수 있어서 코드 효율성을 향상 시킬 수 있습니다.
const의 효율적인 사용법
- 컴파일 타임에 계산가능한 값을 넣는 것이 좋습니다. 예를들어 리터럴 값이나 다른 상수를 포함하는 값이 될 수 있습니다.
- 복잡한 객체나 상수가 아닌 값과 관련된 표현식과 함께 사용할 때는 주의해야합니다. 이는 예상치 못한 동작을 일으킬 수 있습니다.
- 진정으로 상수인 값에만 사용해야합니다. 잘못 사용하면 미묘한 버그를 도입할 수 있습니다.
결론
final과 const는 Flutter와 Dart에서 변수 선언에서 불변성과 최적화를 가능하게 하는 강력한 키워드입니다. 이들의 차이점과 최상의 실천 방법을 이해하는 것은 효율적이고 유지보수 가능한 코드를 작성하는 데 중요합니다. "final"과 "const"를 효과적으로 활용함으로써 개발자는 성능, 메모리 사용량, 코드 가독성을 향상시키고 의도하지 않은 변수 수정과 관련된 버그를 방지할 수 있습니다. 최상의 실천 방법을 준수함으로써 Flutter와 Dart 프로젝트에서 "final"과 "const"의 적절한 사용을 보장하여 더 견고하고 신뢰할 수 있는 응용 프로그램을 만들 수 있습니다.
Reference
https://medium.com/@yetesfadev/demystifying-final-and-const-in-flutter-and-dart-4d6dbc4cbbb8
Demystifying “final” and “const” in Flutter and Dart:
In Flutter and Dart programming, the keywords “final” and “const” play a crucial role in defining variables and constants. Understanding…
medium.com