클린 코드 강의를 듣고 내용을 정리한 글이니 아래 참조 링크를 참고하시기 바랍니다.
책임과 역할을 잘 알고 분류해야 한다.
예로는 UserService 라는 서비스 클래스가 어떠한 역할을 하는지 알아야 한다.
대부분 crud라는 기능이 있을 것인데, 분류를 해보면 Read와 Write 라는 책임과 역할이 있다.
이러한 책임과 역할을 따로 빼면 UserReadService와 UserWriteService라는 두 클래스로 뽑아 낼 수 있다.
구현 상속이 객체 지향에서의 재사용이 절대 아니다!
상속은 객체에게 다형성을 제공한다.
- 구현 상속
- 상위 타입의 구현을 재사용
- 인터페이스 상속
- 타입 정의만 상속
구현 상속
복잡한 상속 관계에 있는 클래스를 재사용하는 것이 아니고 공통적인 기능을 뽑아 하나로 만들어 공통 기능과 속성을 호출 하는 것이 구현 상속이다.
구현 상속의 문제점
- 구현 상속의 문제점은 상위 타입에서 변경한 내용이 있으면 그 하위 타입에 영향을 미친다.
- 유사 기능의 확장에서 클래스의 개수가 불필요하게 증가할 수 있다.
- 2개 이상의 상위 타입의 기능이 필요한 경우 2개의 클래스를 구현 상속을 해야하는데 자바에선 다중 상속이 안되므로 문제가 된다.
인터페이스 상속
외부에서 바라볼 때 인터페이스로만 바라보게 하여 인터페이스를 구현한 구현체들을 재사용할 수 있게 한다.
데코레이터 패턴을 보면 인터페이스를 상속 구현하고 참조하여 기존 기능을 재사용하면서 새로운 기능을 추가할 수 있게끔 해준다.
이러한 것을 볼 때 상속 관계는 절대 재사용이 아니라는 점을 기억하며 인터페이스는 높은 수준의 추상화 작업을 진행하여 재사용이 쉽다는 것을 잘 이해하자.
Programming to Interface
인터페이스대로 프로그래밍을 하라!
- 클라이언트 코드가 항상 인터페이스를 사용해야 한다는 의미
- 클라이언트는 구현 변경에 대해서 영향을 받지 않는다.
- 인터페이스 시그니처가 사용 가능한 모든 행위를 보여준다.
사용하는 이유
- 추상화를 통해 유연함을 얻기 위한 규칙
- 런타임에 동작 바인딩으로 프로그램의 행위를 변경하기 위해 보다 나은 프로그램을 작성할 수 있게 한다.
상세 구현에 빠지다보면 상위 수준의 설계를 놓치기 쉽다.
먼저 추상화를 통해서 상위 수준에서 설계하는 것을 정의하고 구현하는 것이 좋은 습관이다.
아래 강의는 클린 코드 강의입니다. 유익한 내용이니 참고 바랍니다.
참조
https://www.youtube.com/watch?v=60lLSe1phks&list=PLeQ0NTYUDTmMM71Jn1scbEYdLFHz5ZqFA&ab_channel=백명석
'Clean Code' 카테고리의 다른 글
[Clean code] Clean code function 원칙을 지켜가며 나만의 코드 리팩터링하기 (0) | 2022.08.20 |
---|