본문 바로가기
Dart/Study

Dart에서 Immutable vs Mutable 완벽 가이드

by Maccrey Coding 2024. 9. 11.
반응형

 

Dart는 현대적인 프로그래밍 언어로, 효율적이고 안정적인 앱 개발을 지원합니다.

Dart에서 immutablemutable 객체는 프로그래밍에서 중요한 개념인데요, 이를 이해하면 코드의 안정성과 예측 가능성을 높일 수 있습니다.

이 블로그 포스트에서는 이 두 가지 개념의 차이와 함께, Hash값을 비교하는 간단한 예제 코드를 통해 그 차이를 실질적으로 이해하는 방법을 설명하겠습니다.

Immutable vs Mutable 객체란?

Immutable 객체Mutable 객체는 데이터가 변경 가능한지 여부에 따라 구분됩니다.

  1. Immutable 객체
    • 정의: 객체의 상태가 한 번 설정되면 변경되지 않는 객체입니다.
    • 장점: 스레드 안전성을 제공하며, 예측 가능한 동작을 보장합니다.
    • 예제: Dart의 String은 immutable 객체입니다. 한 번 생성된 문자열은 변경할 수 없습니다.
  2. Mutable 객체
    • 정의: 객체의 상태를 변경할 수 있는 객체입니다.
    • 장점: 데이터의 변화를 쉽게 적용할 수 있어 유연합니다.
    • 예제: Dart의 List는 mutable 객체입니다. 리스트에 요소를 추가하거나 제거할 수 있습니다.

Hash값 비교를 통한 Immutable과 Mutable 객체의 차이

해시값을 비교하는 방법으로 immutable과 mutable 객체의 차이를 쉽게 이해할 수 있습니다.

해시값은 객체의 상태를 나타내는 고유한 값으로, 객체의 변경 여부를 파악하는 데 유용합니다.

 

1. Immutable 객체의 예: String

void main() {
  String str1 = 'hello';
  String str2 = 'hello';

  print('Hashcode of str1: ${str1.hashCode}');
  print('Hashcode of str2: ${str2.hashCode}');
}
  • 결과: str1과 str2는 동일한 해시값을 가집니다. 이는 immutable 객체인 String이 불변성을 유지하기 때문입니다.

2. Mutable 객체의 예: List

void main() {
  List<int> list1 = [1, 2, 3];
  List<int> list2 = [1, 2, 3];

  print('Hashcode of list1: ${list1.hashCode}');
  print('Hashcode of list2: ${list2.hashCode}');

  // 리스트에 요소 추가
  list1.add(4);

  print('Hashcode of modified list1: ${list1.hashCode}');
}
  • 결과: 초기에는 list1과 list2의 해시값이 동일하지만, list1의 내용이 변경되면서 해시값이 달라집니다. 이는 mutable 객체인 List가 변경 가능하기 때문입니다.

Immutable과 Mutable 객체의 선택

  • Immutable 객체는 상태를 변경하지 않아야 하는 데이터에 적합합니다. 예를 들어, 앱의 설정값이나 고정된 정보를 다룰 때 유용합니다.

  • Mutable 객체는 데이터를 자주 변경해야 하는 경우에 적합합니다. 예를 들어, 사용자 입력이나 실시간 데이터 처리에 유용합니다.

 

Dart에서 immutable과 mutable 객체는 각각의 장단점이 있으며, 사용하는 용도에 따라 선택할 수 있습니다.

Immutable 객체는 안정성과 예측 가능성을 제공하며, Mutable 객체는 데이터의 유연성을 제공합니다.

해시값 비교를 통해 두 객체의 차이를 이해하는 것도 매우 유용합니다.

 

이제 Dart에서의 객체 상태 관리에 대해 명확한 이해를 갖게 되었기를 바랍니다.

프로그래밍에서 올바른 객체 선택은 코드의 효율성과 안정성을 크게 향상시킬 수 있습니다.

 

구독!! 공감과 댓글은 저에게 큰 힘이 됩니다.

Starting Google Play App Distribution! "Tester Share" for Recruiting 20 Testers for a Closed Test.

 

Tester Share [테스터쉐어] - Google Play 앱

Tester Share로 Google Play 앱 등록을 단순화하세요.

play.google.com

 

 

반응형