본문 바로가기

Better SW Development

[dW Review] 함수형 사고: 결합 및 컴포지션, Part 1

함수형 언어에 대해서 이야기 하고 있진 않지만, 함수형 사고(thinking)에 대해서 이야기 하는 아티클입니다.

함수형 사고: 결합 및 컴포지션, Part 1
http://www.ibm.com/developerworks/kr/library/j-ft5/index.html  


2011년 마지막 달의 IBM dW 리뷰입니다. 아직까지는 조금 뜨드미지근한 함수형 언어에 대한 접근을 다룬 기사입니다. 우선, 아쉬운 점은 번역이 참.... (잠시 묵념)

어려운 내용이 아닌데 어려운 번역때문에 내용이 어려워졌습니다. :(

본문을 읽기전에 다음 몇 가지 안내를 읽고 보시고 읽으시면 조금쯤은 더 나아지길 기원합니다. (응?)

- 우선 이 글에서 이야기 하는 함수형 사고의 특징으로 유도하고 있는 점은 클래스의 목적이자 특징 중 하나인 '상태저장'을 최소화 하기 위한 노력입니다. 클래스를 만들되 필드 변수를 억제하고 오로지 함수의 인자만으로 처리하는 방식입니다. 그러다 보니 예전 C에서 전역상태를 만들지 않기 위해 해야만 했던 인자(argument)로 필요한 정보 넘기기가 이루어집니다. 
그러다 보니 리팩터링 전에는 인자가 하나였던 isFactor가 함수형 사고를 기반으로 리팩터링 했더니 인자 두 개가 되었습니다.  isFactor(int number, int potential_factor)

- 결합이라고 표현하는 내용은 실제 원문은 커플링(coupling)입니다. 번역이 맞긴 한데 현업에서 결합이라고 잘 안쓰기 때문에 오히려 더 어렵게 느껴집니다. 상속을 통한 커플링과 객체를 독립적으로 구성해 놓고 가져다 쓰는 컴포지션(composition)을 대조하는 식으로 리팩터링을 진행합니다.

- 클래스 네트워크라고 표현한 부분은 상속구조에서의 상위 클래스와 하위클래스 사이의 정보 전달을 의미합니다. 이런 구조에서 하위 클래스로의 정보 전달은 따로 '다운스트림'이라고 표현했습니다.

앞에서도 이야기 했지만 간단한 내용인데 번역으로 인해 조금 어렵습니다. 아쉽네요. 그래도 2편을 기대하며 참고 읽어볼만은 합니다. (다만 2편은 그루비 이야기가 나오는데 것도 쫌...)