불변성(Immutability)이란 무엇인가요?
프론트엔드와 관련된 질문이에요.
불변성이란 데이터가 최초 생성된 이후 그 상태를 변경할 수 없는 성질을 의미합니다. 프로그래밍에서 불변성을 지키는 것은 예측 가능하고 안정적인 코드를 작성하는 데 중요합니다.
객체와 배열 같은 참조 타입은 기본적으로 가변적입니다. 예를 들어, 객체의 프로퍼티 값을 직접 변경할 수 있습니다. 여기서 만약 불변성을 유지하고 싶다면, 객체의 프로퍼티를 직접 변경하지 않고 새로운 객체를 생성하는 방식을 사용해야 합니다. 구체적인 예를 들면 다음과 같습니다.
const person = { name: "Alice", age: 25 };
// 불변성 미유지
person.age = 26;
// 불변성 유지
const updatedPerson = { ...person, age: 26 };
불변성을 유지하기 위해 스프레드 연산자, Object.assign(), Object.freeze()와 같은 내장 기능을 활용하거나, Immutable js와 같은 도구를 활용할 수 있습니다.
불변성을 유지하면 성능 면에서 불리할 것 같은데, 왜 불변성을 유지하나요? 🤔
말씀해주신 대로 업데이트마다 새로운 객체를 생성해야 하므로 메모리 비용이 약간 증가할 수 있습니다. 하지만 이 비용은 일반적으로 무시할만한 수준이며, 불변성 유지는 장기적으로 유지보수성과 안정성을 크게 향상시킨다는 장점이 있습니다.
불변성은 데이터의 변경 흐름을 추적하기 쉽게 만들어줍니다. 가변 데이터를 이곳저곳에서 수정해가며 사용하면 데이터가 언제, 어디서 변경되었는지 파악하기 어렵습니다. 반면, 불변성을 지키면 데이터 변경이 항상 새로운 객체 생성을 통해 이루어지므로 변경 지점을 명확하게 추적할 수 있습니다.
📚 추가 학습 자료를 공유합니다.
공유하기
컨텐츠 피드백