3.6 가변 데이터
가변 데이터의 문제점
데이터를 변경했을 때 예상하지 못한 버그로 이어지는 경우가 있다.
코드의 다른 곳에서는 다른 값을 기대하는 사실을 인식하지 못한 채 수정하면 프로그램이 오작동한다.
아주 드문 조건에서만 발생할 경우 원인을 알아내기 어렵다.
→ 함수형 프로그래밍에서는 데이터는 절대 변하지 않고, 데이터를 변경하려면 반드시 변경하려는 값에 복사본을 만들어서 반환한다는 개념을 기본으로 삼고 있다.
⭐️ 무분별한 데이터 수정에 따른 위험을 줄이는 방법을 알아보자.
📍변수 캡슐화 하기: 정해놓은 함수를 거쳐야만 값을 수정할 수 있도록 하여 값이 어떻게 수정되는지 감시하거나 코드를 개선하기 쉽게 한다.
📍변수 쪼개기: 하나의 변수에 용도가 다른 값들은 저장하느라 값을 갱신하는 경우에 용도별로 독립 변수에 저장한다.
→ 문장 슬라이드하기, 함수 추출하기를 통해 코드를 분리한다.
📍질의 함수와 변경 함수 분리하기: API 만들 때, 부작용이 있는 코드를 호출할 수 없게 한다.
📍세터 제거하기: 세터를 호출하는 클라이언트를 찾아 변수의 유효 범위를 줄인다.
📍파생 변수를 질의 함수로 바꾸기
📍여러 함수를 클래스로 묶기, 여러 함수를 변환 함수로 묶기: 변수를 갱신하는 코드들의 유효범위를 제한한다.
📍참조를 값으로 바꾸기: 구조체처럼 내부 필드에 데이터를 담고 있는 변수인 경우 내부 필드를 수정하지 말고, 구조체를 통째로 교체하기
Last updated