자바스크립트에서 효과적인 불변 데이터 구조 설계하기
목차
불변 데이터의 중요성
불변 데이터는 수정할 수 없는 데이터를 의미합니다. 자바스크립트에서 불변 데이터를 사용하면 다음과 같은 장점이 있습니다.
- 예측 가능한 동작: 불변 데이터는 변경이 불가능하기 때문에 의도하지 않은 변화로부터 안정성을 보장합니다.
- 성능 향상: 불변 데이터는 변경되지 않기 때문에 메모리 상의 동일한 값을 공유하거나 캐시를 사용하여 성능을 향상시킬 수 있습니다.
- 동시성 처리: 불변 데이터는 여러 스레드나 프로세스 사이에서 안전하게 공유될 수 있습니다.
불변 데이터 구조 설계 패턴
다음은 자바스크립트에서 효과적인 불변 데이터 구조 설계를 위해 사용할 수 있는 패턴입니다.
1. 객체 복사
객체를 복사하여 변경 사항이 원래 객체에 영향을 미치지 않도록 합니다.
const obj = { value: 10 };
const newObj = { ...obj, value: 20 };
2. 배열 복사
배열을 복사하여 변경 사항이 원래 배열에 영향을 미치지 않도록 합니다.
const arr = [1, 2, 3];
const newArr = [...arr, 4];
3. 참조 대신 값 사용
원시값을 사용하여 참조 대신 값을 직접 저장합니다.
const value = 10;
4. Immutable.js 사용
Immutable.js는 자바스크립트에서 불변 데이터를 다루기 위한 라이브러리입니다. 이를 사용하면 효과적으로 불변 데이터 구조를 설계할 수 있습니다.
import { List, Map } from 'immutable';
const list = List([1, 2, 3]);
const newList = list.push(4);
const map = Map({ key: 'value' });
const newMap = map.set('key', 'new value');
예시 코드
다음은 불변 데이터 구조를 설계하는 예시 코드입니다.
class Person {
constructor(name) {
this._name = name;
}
get name() {
return this._name;
}
}
const person1 = new Person('John');
const person2 = new Person('Jane');
const people = [person1, person2];
const newPeople = [...people, new Person('Alice')];