Dart 언어 오답노트 : 7. final과 immutable

샤워실의 바보·2023년 10월 24일
0
post-thumbnail

final 키워드를 Flutter 클래스에서 사용하는 주된 이유는 불변성(immutability)을 강화하여 앱의 상태 관리를 보다 예측 가능하고 안정적으로 만들기 위함입니다. Immutable 프로그래밍은 데이터의 상태가 생성 후에 변경되지 않도록 함으로써 버그를 줄이고 앱의 복잡성을 관리하는 데 도움을 줍니다.

Flutter와 Immutable 프로그래밍

Flutter에서 UI를 구축할 때, 위젯 트리를 사용합니다. 위젯은 UI의 한 부분을 나타내며, Flutter에서는 위젯을 불변 객체로 다루는 것이 일반적입니다. 이는 위젯의 상태가 한 번 설정되면 변경되지 않아야 함을 의미합니다. 이렇게 함으로써 Flutter 프레임워크는 위젯 트리의 어떤 부분이 변경되었는지 빠르게 감지하고, 필요한 부분만 다시 렌더링할 수 있습니다.

final의 역할

final 키워드를 사용하여 클래스의 프로퍼티를 선언하면, 해당 프로퍼티는 객체가 생성될 때 한 번만 설정될 수 있고, 이후에는 변경될 수 없게 됩니다. 이는 불변성을 강화하고, 클래스의 인스턴스가 생성된 후에는 해당 인스턴스의 상태가 변경되지 않음을 보장합니다.

class MyImmutableClass {
  final String name;
  final int age;

  MyImmutableClass(this.name, this.age);
}

위의 예제에서 MyImmutableClassnameage라는 두 개의 final 프로퍼티를 가지고 있습니다. 이 클래스의 인스턴스를 생성하면, nameage는 생성자를 통해 한 번 설정되고, 이후에는 변경될 수 없습니다.

Flutter에서의 이점

final을 사용하여 위젯의 프로퍼티를 불변으로 만들면, Flutter 프레임워크는 위젯 트리에서 어떤 부분이 변경되었는지 더 쉽게 파악할 수 있습니다. 이는 앱의 성능을 향상시키고, 버그를 줄이며, 앱의 상태를 보다 예측 가능하게 만들어 줍니다.

불변 객체를 사용하면 앱의 다른 부분에서 객체를 변경하지 못하게 되므로, 버그 발생 가능성이 줄어들고, 앱의 상태를 추적하고 디버깅하기가 더 쉬워집니다.

결론적으로, final을 사용하여 Flutter 클래스에서 불변성을 강화하는 것은 앱의 상태를 보다 안정적이고 예측 가능하게 만들며, 앱의 성능과 유지 관리 용이성을 향상시키는 중요한 전략입니다.

profile
공부하는 개발자

0개의 댓글