의존성 주입
사용과 제작을 분리하는 강력한 메커니즘 중 하나.
제어 역전 기법을 의존성 관리에 적용
-> 한 객체가 맡은 보조 책임을 새로운 객체에 전부 떠넘기는 기법
-> 책임을 다른 메커니즘(주로 main 루틴이나 특수 컨테이너)에 전담해 넘김으로써 제어를 역전
+클래스가 의존성을 해결하지 않고 설정자 메서드나 생성자 인수를 제공해 의존성을 주입할 수 있음
확장
- 처음부터 올바르게 시스템을 만들 수는 없다.
-> 오늘 주어진 사용자 스토리에 맞춰 시스템을 구현하되, 계속해서 시스템을 조정하고 확장해야 함
=> 반복적이고 점진적인 애자일 방식의 핵심. - 테스트 주도 개발, 리팩터링은 코드 수준에서 시스템을 조정하고 확장하기 쉽게 만듦
- 시스템 아키텍처는 관심사를 적절히 분리해 관리하면 점진적인 발전이 가능
횡단(cross-cutting) 관심사
영속성과 같은 관심사는 전반적으로 동일한 방식을 이용하게 해야 함
=> 여러 컴포넌트나 레이어에 걸쳐 영향을 미치는 관심사(=횡단 관심사)
AOP(관점 지향 프로그래밍) : 횡단 관심사에 대처해 모듈성을 확보하는 일반적인 방법론.
ex) 프로그래머가 영속성 책임을 영속성 프레임워크에 위임하면, AOP 프레임워크는 대상 코드에 영향을 미치지 않는 상태로 동작 방식을 변경함.
자바에서 사용하는 해당 관점 : 자바 프록시
자바 프록시
개별 객체나 클래스에서 메서드 호출을 감싸는 등 단순한 상황에 적합함
but 코드 양과 크기가 많아져 깨끗한 코드를 작성하기 어려움
'독서일지 > 클린 코드' 카테고리의 다른 글
클린 코드 독서일지 - Day 23 (0) | 2023.11.20 |
---|---|
클린 코드 독서일지 - Day 22 (1) | 2023.11.20 |
클린 코드 독서일지 - Day 20 (0) | 2023.11.15 |
클린 코드 독서일지 - Day 19 (1) | 2023.11.15 |
클린 코드 독서일지 - Day 18 (0) | 2023.11.13 |