JavaScript에서 렌즈는 데이터에 접근하고 수정하는 일을 모듈화되고 불변한 방식으로 할 수 있게 해주는 함수형 프로그래밍 개념이에요. 렌즈는 본질적으로, 객체 안의 특정 필드에 초점을 맞추는 순수한 getter와 setter 함수의 조합 가능한 쌍이에요.
렌즈를 사용하면 코드를 단순하게 만들고, 재사용성을 높이고, 흔히 발생하는 프로그래밍 오류를 피할 수 있어요. 예를 들어, 렌즈는 다음과 같은 경우에 사용할 수 있어요:
중첩된 레코드를 갱신할 때는 렌즈를 사용해요(불변 데이터를 다루는 언어에 해당해요).
중첩된 불변 레코드의 필드를 갱신하는 일은 꽤 번거로워요. 그런 경우의 코드는 구조가 깊은 만큼이나 장황해져요. 예를 들어 Person이라는 레코드가 있고, 그 안에 Address가, Address 안에 Street가, Street 안에 Number가 있다고 해봐요. Number를 갱신하려면 새 Number를 담은 새 Street를 만들고, 그 새 Street를 담은 새 Address를 만들고, 마지막으로 그 새 Address를 담은 새 Person을 만들어야 해요. 벌써부터 헷갈리죠?
이 문제를 해결하는 한 가지 방법은 렌즈를 사용하는 거예요.
렌즈를 사용해 레코드에 접근하는 함수 몇 개를 구현해 봐요. 테스트 스위트는 렌즈를 아예 쓰지 않고도 여러 가지 접근 방식을 실험해 볼 수 있도록 허용해요.
Exercism에 가입하고 JavaScript 트랙을 개념 37개연습 문제 159개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.