-
10장 - ISP: 인터페이스 분리 원칙클린 코드(Clean Code)/클린 아키텍처요약 2022. 11. 26. 00:01
인터페이스 분리 원칙
책의 예제에서는 op1, op2, op3 메서드를 포함하고 있는 ops 인터페이스를 소개합니다.
이때 user1은 op1 만 user2는 op2 만 user3는 op3 만 사용한다고 하더라도 3가지 추상 클래스를 모두 구현해야 합니다.
또한 정적 타입 언어로 작성된 클래스라 하였을 때 op2의 소스 코드가 변경되면 user1도 다시 컴파일한 후 새로 배포해야 합니다.
따라서 op1, op2, op3를 각각의 인터페이스로 분리하여 사용하게 된다면 이런 문제를 해결할 수 있습니다.
ISP와 언어
사실 동적 언어 타입의 언어라면 런타임에 추론을 하기 때문에 소스 코드 의존성이 아예 없어져 재컴파일과 재배포가 필요 없습니다.
따라서 ISP를 아키텍처보다는 언어와 관련된 문제라고 결론 내릴 여지가 있습니다.
하지만 일반적으로 필요 이상으로 많은 걸 포함하는 모듈에 의존하는 것을 해로운 일입니다.
개인적인 견해
인터페이스 분리 원칙을 가장 잘 나타내는 예시는 복합기라고 생각합니다.
팩스, 스캔, 프린트가 가능한 인터페이스가 있으면 이를 3가지의 인터페이스로 쪼개야 합니다.
'클린 코드(Clean Code) > 클린 아키텍처요약' 카테고리의 다른 글
12장 - 컴포넌트 (0) 2022.12.13 11장 - DIP: 의존성 역전 원칙 (0) 2022.11.27 9장 - LSP: 리스코프 치환 원칙 (0) 2022.11.25 8장 - OCP: 개방-폐쇄 원칙 (0) 2022.11.24 7장 - SRP : 단일 책임 원칙 (0) 2022.11.23