|
의존성 주입(dependency injection) |
의존성을 코드 설계 인터페이스를 통해 내부에서 사용하는 데 전달하는 행위다(currentDay가 매개변수로 ‘주입’된 코드를 기억해 보자). 의존성을 주입하는 지점을 주입 지점(injection point)이라고 한다. 예제 3-3은 매개변수 주입 지점을 사용하고 있다. 이러한 주입 지점을 다른 말로는 심이라고 한다. |
|
심(seam) |
• 마이클 페더스가 쓴 <레거시 코드 활용 전략>에서 처음 사용한 용어로, 영어로는 ‘씨-음(s-ee-m)’처럼 발음한다. • 심은 소프트웨어의 서로 다른 두 부분이 만나는 지점으로, 이곳에 다른 것을 주입할 수 있다. 이는 해당 위치에서 직접 코드를 수정하지 않고도 프로그램 동작을 변경할 수 있는 지점을 의미한다. 예시로 매개변수, 함수, 모듈 로더, 함수 재작성 등이 있고, 객체 지향 프로그래밍에서는 클래스 인터페이스, 공용 가상 메서드 등이 있다. |
프로덕션 코드에서 심은 단위 테스트의 유지 보수성과 가독성에 중요한 역할을 한다. 테스트하려는 코드에 동작이나 임의의 데이터를 변경하고 주입하기가 쉬울수록 코드가 변경되더라도 테스트를 작성하고 읽고 유지 보수하는 것이 더 쉬워진다. 코드 설계와 관련된 패턴과 안티 패턴은 8장에서 더 자세히 다룰 예정이다.