[CS] Solid 원칙으로 React Hook 작성하기(ISP)

장광진·2024년 7월 10일

CS

목록 보기
13/13

사용하지 않는 메서드에 의존하도록 코드를 강제해서는 안된다.

이름에서 알 수 있듯이 인터페이스와 관련이 있으며, 기본적으로 함수와 클래스는 명시적으로 사용하는 인터페이스만 구현해야 한다는 뜻이다. 이는 인터페이스를 깔끔하게 유지하고 클래스가 여러 메서드를 포함하는 하나의 큰 인터페이스를 구현하는 대신 몇 개의 인터페이스를 선택하여 구현하도록 하는 것이 가장 쉬운 방법이다.

예를 들어 웹사이트를 소유한 사람을 나타내는 클래스는 그 사람에 대한 세부 정보를 설명하는 Person이라는 인터페이스와 소유한 웹사이트에 대한 메타데이터가 있는 Website라는 인터페이스 두 개를 구현해야 한다.

만약 소유자와 웹사이트에 대한 정보를 모두 포함하는 단일 인터페이스 웹사이트를 만들었다면 이는 인터페이스 분리 원칙에 위배된다.

위 인터페이스의 문제점이 무엇일까?? 문제는 인터페이스의 사용성을 떨어뜨린다는 것이다. 만약 human이 아니라 company라면 company는 실제로 family name이 없다. 그렇다면 human과 company 모두 사용할 수 있도록 인터페이스를 수정헤야할까? 아니면 CompanyOwnedWebsite라는 새로운 인터페이스를 만들어야할까?
그러면 선택적 프로퍼티가 많은 인터페이스를 만들거나 각각 PersonWebsite 및 CompanyWebsite이라는 두 개의 인터페이스를 만들 수 있다. 이 두 가지 솔루션 중 어느 것도 최적은 아닐 것이다.

이때 ISP를 따르는 솔루션은 다음과 같다.

profile
점진적 과부하

0개의 댓글