독서일지/클린 코드

클린 코드 독서일지 - Day 21

Sadie Kim 2023. 11. 16. 23:26

의존성 주입

사용과 제작을 분리하는 강력한 메커니즘 중 하나.
제어 역전 기법을 의존성 관리에 적용
-> 한 객체가 맡은 보조 책임을 새로운 객체에 전부 떠넘기는 기법
-> 책임을 다른 메커니즘(주로 main 루틴이나 특수 컨테이너)에 전담해 넘김으로써 제어를 역전

+클래스가 의존성을 해결하지 않고 설정자 메서드나 생성자 인수를 제공해 의존성을 주입할 수 있음

확장

  • 처음부터 올바르게 시스템을 만들 수는 없다.
    -> 오늘 주어진 사용자 스토리에 맞춰 시스템을 구현하되, 계속해서 시스템을 조정하고 확장해야 함
    => 반복적이고 점진적인 애자일 방식의 핵심.
  • 테스트 주도 개발, 리팩터링은 코드 수준에서 시스템을 조정하고 확장하기 쉽게 만듦
  • 시스템 아키텍처는 관심사를 적절히 분리해 관리하면 점진적인 발전이 가능

횡단(cross-cutting) 관심사

영속성과 같은 관심사는 전반적으로 동일한 방식을 이용하게 해야 함
=> 여러 컴포넌트나 레이어에 걸쳐 영향을 미치는 관심사(=횡단 관심사)
AOP(관점 지향 프로그래밍) : 횡단 관심사에 대처해 모듈성을 확보하는 일반적인 방법론.
ex) 프로그래머가 영속성 책임을 영속성 프레임워크에 위임하면, AOP 프레임워크는 대상 코드에 영향을 미치지 않는 상태로 동작 방식을 변경함.
자바에서 사용하는 해당 관점 : 자바 프록시

자바 프록시

개별 객체나 클래스에서 메서드 호출을 감싸는 등 단순한 상황에 적합함
but 코드 양과 크기가 많아져 깨끗한 코드를 작성하기 어려움