더북(TheBook)

의존성 주입(dependency injection)

의존성을 코드 설계 인터페이스를 통해 내부에서 사용하는 데 전달하는 행위다(currentDay가 매개변수로 ‘주입’된 코드를 기억해 보자). 의존성을 주입하는 지점을 주입 지점(injection point)이라고 한다. 예제 3-3은 매개변수 주입 지점을 사용하고 있다. 이러한 주입 지점을 다른 말로는 이라고 한다.

심(seam)

• 마이클 페더스가 쓴 <레거시 코드 활용 전략>에서 처음 사용한 용어로, 영어로는 ‘씨-음(s-ee-m)’처럼 발음한다.

• 심은 소프트웨어의 서로 다른 두 부분이 만나는 지점으로, 이곳에 다른 것을 주입할 수 있다. 이는 해당 위치에서 직접 코드를 수정하지 않고도 프로그램 동작을 변경할 수 있는 지점을 의미한다. 예시로 매개변수, 함수, 모듈 로더, 함수 재작성 등이 있고, 객체 지향 프로그래밍에서는 클래스 인터페이스, 공용 가상 메서드 등이 있다.

프로덕션 코드에서 심은 단위 테스트의 유지 보수성과 가독성에 중요한 역할을 한다. 테스트하려는 코드에 동작이나 임의의 데이터를 변경하고 주입하기가 쉬울수록 코드가 변경되더라도 테스트를 작성하고 읽고 유지 보수하는 것이 더 쉬워진다. 코드 설계와 관련된 패턴과 안티 패턴은 8장에서 더 자세히 다룰 예정이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.