불변성

❓질문

불변성(Immutability)이란 무엇인가요?


💡 조사하기전 내가 알고 있던 내용

불변성이란 어떠한 값이나 상태를 변경할 수 없는 상태 즉 변하지 않는 것이라고 설명할 수 있을것 같습니다.

이는 코딩을 할때 변수에 들어가있는 값이 변경되지않고 불변성을 띈다면 이 값은 유추할 수 있는 값이 되고 에러 컨트롤이나 원치않는 값이 나오는걸 방지를 시켜 줄 수 있습니다.

이때 변수 선언 const 로 선언된 상수 같은경우에 불변성을 띄고 객체를 선언했을 경우에는 깊은 복사를 통해 새로 만들어진 객체를 수정하여 원본은 그대로 냅두는등의 방식을 사용하여합니다.

혹은 Object.assign()이나 Object.freeze()같은 메소드도 사용하여 불변성을 유지하는데 도움을 줄 수 있습니다.


🏫 정리한 내용

불변성은 업데이트를 할때 마다 새로운 객체를 생성해야 하므로 메모리 비용이 약간은 증가할 수 있습니다.

그러나 이 비용은 무시할만한 수준이고 불변성 유지는 장기적으로 유지보수성과 안정성을 크게 향상 시킨다는 장점이 있습니다.

불변성은 데이터의 변경 흐름을 추적하기 쉽게 만들어줍니다. 가변 데이터를 이곳저곳에서 수정해가며 사용하면 데이터가 언제, 어디서 변경되었는지 파악하기 어렵습니다. 반면, 불변성을 지키면 데이터 변경이 항상 새로운 객체 생성을 통해 이루어지므로 변경 지점을 명확하게 추적할 수 있습니다.