이 문서는 Google Cloud Translation API를 사용해 자동 번역되었습니다.
어떤 문서는 원문을 읽는게 나을 수도 있습니다.
컴포지션과 상속은 객체 지향 프로그래밍에서 두 가지 중요한 개념입니다. JavaScript에서는 이러한 개념이 사용되는 방식에 차이가 있습니다. 함수형 프로그래밍에서는 상속보다 구성이 선호됩니다.
함수형 프로그래밍은 함수 사용을 선호하는 프로그래밍 패러다임입니다. 함수는 함수형 프로그래밍에서 일급 시민으로 간주됩니다. 즉, 다른 함수에 인수로 전달할 수 있고 다른 함수를 반환할 수 있습니다.
상속은 기존 클래스에서 새 클래스를 만드는 방법입니다. 새 클래스는 기존 클래스의 속성과 메서드를 상속합니다. 상속은 종종 객체 지향 프로그래밍에서 사용됩니다.
컴포지션은 개체를 결합하는 방법입니다. 결과 개체에는 구성된 개체의 속성과 메서드가 있습니다. 구성은 함수형 프로그래밍에서 자주 사용됩니다.
함수형 프로그래밍은 여러 가지 이유로 상속보다 구성을 선호합니다.
상속은 새 클래스를 만드는 정적인 방법입니다. 새 클래스는 하나의 기존 클래스에서만 상속할 수 있습니다. 이것은 제한적일 수 있습니다.
컴포지션은 새 개체를 만드는 보다 유연한 방법입니다. 구성된 개체는 여러 다른 개체의 속성과 메서드를 가질 수 있습니다. 이렇게 하면 구성이 상속보다 더 강력해집니다.
상속은 이해하기 어려울 수 있습니다. 클래스 간의 관계는 복잡할 수 있습니다. 이것은 상속을 사용하는 코드를 유지하기 어렵게 만들 수 있습니다.
구성이 이해하기 쉽습니다. 개체 간의 관계는 보다 직접적입니다. 이렇게 하면 컴포지션을 사용하는 코드를 유지 관리하기가 더 쉬워집니다.
상속은 변경하기 어려울 수 있습니다. 클래스 간의 관계가 복잡하면 상속 계층 구조를 변경하기 어려울 수 있습니다. 이것은 변경하기 어려운 코드로 이어질 수 있습니다.
구성을 변경하기가 더 쉽습니다. 개체 간의 관계는 보다 직접적입니다. 이렇게 하면 구성을 사용하는 코드를 더 쉽게 변경할 수 있습니다.
구성은 상속보다 더 유연하고 이해하기 쉽습니다. 변경하기도 더 쉽습니다. 이러한 이유로 함수형 프로그래밍에서는 상속보다 구성이 선호됩니다.