불변성은 함수형 프로그래밍 패러다임에서 자주 쓰는 도구일 뿐입니다.
제가 아는 한, 함수형 프로그래밍 패러다임은 ‘부수 효과’(Side effect) 를 최대한 통제하고자 하는 프로그래밍 패러다임입니다.
부수 효과를 통제하려다 보니 자연스레 참조 투명성이라던가 불변성, 순수 함수 같은 것을 중시하는 것으로 알고 있습니다.
그런 점에서, 굳이 함수형 프로그래밍 언어를 쓰지 않더라도 자신이 작성하는 함수나 메소드의 부수 효과에 대해 명확히 인지하고 이를 적절히 통제할 수 있도록 하는 것이 바람직하다고 생각합니다. 이는 코드에서 나는 악취(Code smell)를 줄이고, 단위 테스트를 작성하는 것도 수월해지는 등 장점이 많습니다.
이와 같은 관점에서 부수 효과를 최소화하는 리팩토링에 집중하는 서적으로는 쏙쏙 들어오는 함수형 코딩: 심플한 코드로 복잡한 소프트웨어 길들이기가 있습니다. 이론보다는 실용적이고 실무적인 관점에서 접근하기 때문에, 좋은 코드를 작성하고 싶은 사람이라면 충분히 읽고 익힐 만한 가치가 있습니다. 이걸 읽고 나서 코드 작성하면서 부수 효과에 관해 이전보다 훨씬 신경쓰게 되기만 해도 책값 정도는 충분히 하는 책이라 생각합니다.
불변성은 함수형 프로그래밍 패러다임에서 자주 쓰는 도구일 뿐입니다.
제가 아는 한, 함수형 프로그래밍 패러다임은 ‘부수 효과’(Side effect) 를 최대한 통제하고자 하는 프로그래밍 패러다임입니다.
부수 효과를 통제하려다 보니 자연스레 참조 투명성이라던가 불변성, 순수 함수 같은 것을 중시하는 것으로 알고 있습니다.
그런 점에서, 굳이 함수형 프로그래밍 언어를 쓰지 않더라도 자신이 작성하는 함수나 메소드의 부수 효과에 대해 명확히 인지하고 이를 적절히 통제할 수 있도록 하는 것이 바람직하다고 생각합니다. 이는 코드에서 나는 악취(Code smell)를 줄이고, 단위 테스트를 작성하는 것도 수월해지는 등 장점이 많습니다.
여기에 관해 좀 더 자세히 설명한 번역 글도 있습니다.
이와 같은 관점에서 부수 효과를 최소화하는 리팩토링에 집중하는 서적으로는 쏙쏙 들어오는 함수형 코딩: 심플한 코드로 복잡한 소프트웨어 길들이기가 있습니다. 이론보다는 실용적이고 실무적인 관점에서 접근하기 때문에, 좋은 코드를 작성하고 싶은 사람이라면 충분히 읽고 익힐 만한 가치가 있습니다. 이걸 읽고 나서 코드 작성하면서 부수 효과에 관해 이전보다 훨씬 신경쓰게 되기만 해도 책값 정도는 충분히 하는 책이라 생각합니다.