객체 지향과 함수형 비교
두 방식은 경쟁 관계라기보다 복잡도를 나누는 관점이 다르다. 무엇을 중심으로 읽을지 정하면 코드 구조가 보인다.
| 비교 축 | 객체 지향 | 함수형 | 선택 질문 |
|---|---|---|---|
| 중심 | 상태와 행동을 객체로 묶음 | 데이터 변환과 함수 조합 중심 | 상태가 오래 살아야 하는가 |
| 변경 | 객체 내부 상태를 메서드로 변경 | 입력에서 새 값을 반환 | mutation을 줄여야 하는가 |
| 확장 | class, interface, polymorphism | map, filter, compose | 새 타입과 새 연산 중 무엇이 자주 늘어나는가 |
| 테스트 | 객체 상태 준비가 필요 | 순수 함수는 입력/출력 비교 쉬움 | 부작용을 격리할 수 있는가 |
| 위험 | 상속 깊이와 숨은 상태 | 과한 추상화와 난해한 조합 | 팀이 읽기 쉬운 구조인가 |
OOP와 FP 선택은 유행이 아니라 변경되는 축과 상태 관리 방식을 어디에 둘지의 결정이다.