OOP

-매서드 중심


객체(오브젝트)와 클래스

-데이터를 오브젝트를 객체로 캡슐화, 클래스를 기반으로 생성됨

- state(데이터)와 이를 변경시키는 메서드(행동)이 단위 결합되있음


FP

-함수 중심


순수함수

-순수 함수는 동일 입력 동일 출력. 데이터는 변경 불가능


OOP적 사고

-> 데이터와 행동의 결합


FP적 사고

->데이터와 행동 따로


OOP

-> 가변상태는 메서드를 통해 상태 변경


FP

-> 상태는 변경되지 않고, 상태 변화를 해야할경우, 새로운 상태를 생성해야함.


그냥 존나 쉽게 예시를 들어줌



OOP의 I/O처리 변경



FP 처리 변경


사이드 이펙트를 격리하는 SaveToFileAsync가 있어야함


FP는 순수함수(외부 상태 변경 X, 입력값만을 사용해 출력값 계산)


비순수함수(사이드 이펙트 발생)


이렇게 분리시키는 과정이 있어야함.


OOP 코드에서는 User 클래스가 파일 I/O를 직접 처리함. 이는 User 클래스에서는 사이드 이펙트를 포함하고 있음


FP 코드에서는 사이드 이펙트가 FileIO 로 격리되어 있음. 즉 유저에 관련된 정보들은 순수 함수로 구현되어있음.