Dart는 현대적인 프로그래밍 언어로, 효율적이고 안정적인 앱 개발을 지원합니다.
Dart에서 immutable과 mutable 객체는 프로그래밍에서 중요한 개념인데요, 이를 이해하면 코드의 안정성과 예측 가능성을 높일 수 있습니다.
이 블로그 포스트에서는 이 두 가지 개념의 차이와 함께, Hash값을 비교하는 간단한 예제 코드를 통해 그 차이를 실질적으로 이해하는 방법을 설명하겠습니다.
Immutable vs Mutable 객체란?
Immutable 객체와 Mutable 객체는 데이터가 변경 가능한지 여부에 따라 구분됩니다.
- Immutable 객체
- 정의: 객체의 상태가 한 번 설정되면 변경되지 않는 객체입니다.
- 장점: 스레드 안전성을 제공하며, 예측 가능한 동작을 보장합니다.
- 예제: Dart의 String은 immutable 객체입니다. 한 번 생성된 문자열은 변경할 수 없습니다.
- 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.
'Dart > Study' 카테고리의 다른 글
Dart에서 List와 Map을 정렬하는 방법 (3) | 2024.10.15 |
---|---|
Dart에서 클래스 생성 시 일반 파라미터와 Named 파라미터 사용 방법: 초보자를 위한 완벽 가이드 (1) | 2024.09.15 |
Dart의 Typedef: 쉽게 이해하는 사용 방법과 옵션 (1) | 2024.09.02 |
Dart의 .. 연산자: 카스케이드 연산자 사용법 완벽 가이드 (0) | 2024.08.26 |
Dart에서 Getter와 Setter, Static: 개념 정리와 사용 사례 (0) | 2024.08.26 |