데브허브 | DEVHUB | [10분 테코톡] 세라의 함수형? 객체지향? 무엇을 해야 할까요?[10분 테코톡] 세라의 함수형? 객체지향? 무엇을 해야 할까요?
- 프론트엔드 개발자들이 함수형과 객체지향 프로그래밍 중 무엇을 선택해야 할지 겪는 혼란을 해소하기 위해 발표가 기획되었습니다. ❓
- 함수형 프로그래밍은 수학적 함수를 기반으로 외부 의존성을 줄여 예측 가능성을 높이는 패러다임입니다. 🧮
- 순수 함수는 같은 입력에 항상 같은 결과를 반환하며, 외부 상태에 의존하지 않아 재사용성과 예측 가능성을 높입니다. 🧪
- 불변성은 데이터를 직접 변경하지 않고 새로운 값을 생성하여 원본을 유지함으로써 코드의 예측 가능성과 버그 추적을 용이하게 합니다. 🔒
- 객체지향 프로그래밍은 상태와 동작을 캡슐화한 객체들이 협력하여 문제를 해결하는 패러다임입니다. 🧩
- 추상화는 복잡한 내부 구현을 숨기고 필요한 속성만 노출하여 학습 비용을 줄이고 안정적인 프로그래밍을 가능하게 합니다. 🎭
- 캡슐화는 데이터와 로직을 하나로 묶어 외부와의 경계를 만들고, 객체 상태에 대한 직접 접근을 막아 안정성을 높입니다. 🛡️
- 함수를 사용하거나 클래스를 사용한다고 해서 곧바로 함수형 또는 객체지향 프로그래밍이 되는 것은 아니며, 각 패러다임의 철학을 지키는 것이 중요합니다. 💡
- 리액트는 컴포넌트가 순수 함수처럼 동작하고 불변성을 유지하도록 강제하여 함수형 프로그래밍 원칙을 따르도록 유도합니다. ⚛️
- 리액트 컴포넌트 설계 시 내부 로직을 숨기는 추상화와 상태 및 동작을 묶는 캡슐화가 자연스럽게 적용됩니다. 🏗️
- 함수형과 객체지향 중 하나를 선택하는 것이 아니라, 안정적이고 확장 가능한 소프트웨어를 만들기 위해 두 패러다임을 모두 이해하고 상황에 맞게 적용하는 유연성이 중요합니다. ⚖️
- 발표자는 데이터 흐름에는 함수형 프로그래밍을, 컴포넌트 설계에는 객체지향 프로그래밍을 접목하여 예측 가능성과 유연성, 확장성을 동시에 추구합니다. 🔄