작년에 Dependency Injection과 IOC 컨테이너를 사용하여 새로운 시스템을 만들었습니다. 이것은 나에게 DI에 대해 많은 것을 가르쳤다!
그러나 개념과 적절한 패턴을 학습 한 후에도 코드를 분리하고 IOC 컨테이너를 레거시 응용 프로그램에 도입하는 것은 어려운 일이라고 생각합니다. 응용 프로그램은 실제 구현이 압도적 일 정도로 충분히 큽니다. 가치를 이해하고 시간이 주어진 경우에도 마찬가지입니다. 누가 이런 시간을 주었을까요 ??
물론 목표는 비즈니스 테스트에 단위 테스트를 제공하는 것입니다!
테스트 방지 데이터베이스 호출과 관련이있는 비즈니스 로직.
기사를 읽었 으며이 Los Techies 기사에 설명 된대로 가난한 사람의 의존성 주입의 위험을 이해합니다 . 나는 그것이 실제로 어떤 것도 분리 하지 않는다는 것을 이해합니다 .
구현에는 새로운 종속성이 필요하므로 시스템 전체 리팩토링이 많이 필요할 수 있음을 이해합니다. 크기에 관계없이 새 프로젝트에서 사용하는 것은 고려하지 않습니다.
질문 : Poor Man 's DI를 사용 하여 레거시 응용 프로그램에 테스트 기능을 도입 하고 볼 롤링을 시작할 수 있습니까?
또한 Poor Man의 DI를 진정한 의존성 주입에 대한 풀뿌리 접근 방식으로 사용하여 원칙의 필요성과 이점을 교육하는 귀중한 방법입니까?
데이터베이스 호출 종속성이있는 메소드를 리팩터링하고 해당 호출을 인터페이스 뒤에서 추상화 할 수 있습니까? 간단히 추상화하면 모의 구현이 생성자 과부하를 통해 전달 될 수 있기 때문에 해당 메소드를 테스트 할 수 있습니다.
일단 노력이 지지자들을 확보하면, IOC 컨테이너를 구현하기 위해 프로젝트를 업데이트 할 수 있으며 생성자를 생성하여 추상화 할 수 있습니다.
I consider it a challenge to decouple code and introduce an IOC container into a legacy application
물론입니다. 기술 부채입니다. 이것이 대대적 인 개선 이전에 작고 지속적인 리팩터링이 선호되는 이유입니다. 주요 설계 결함을 줄이고 IoC로 전환하는 것은 쉽지 않습니다.