Trong năm vừa qua, tôi đã tạo ra một hệ thống mới bằng cách sử dụng Dependency Injection và bộ chứa IOC. Điều này đã dạy tôi rất nhiều về DI!
Tuy nhiên, ngay cả sau khi tìm hiểu các khái niệm và các mẫu thích hợp, tôi coi đó là một thách thức để tách mã và giới thiệu một thùng chứa IOC vào một ứng dụng cũ. Ứng dụng này đủ lớn đến mức một triển khai thực sự sẽ trở nên quá sức. Ngay cả khi giá trị được hiểu và thời gian được cấp. Ai đã dành thời gian cho những thứ như thế này ??
Mục tiêu của khóa học là đưa các bài kiểm tra đơn vị vào logic kinh doanh!
Logic nghiệp vụ được đan xen với các cuộc gọi cơ sở dữ liệu ngăn chặn thử nghiệm.
Tôi đã đọc các bài báo và tôi hiểu được sự nguy hiểm của Tiêm phụ thuộc của Người nghèo như được mô tả trong bài viết này của Los Techies . Tôi hiểu nó không thực sự tách rời bất cứ điều gì.
Tôi hiểu rằng nó có thể liên quan đến việc tái cấu trúc toàn hệ thống vì việc triển khai đòi hỏi phải phụ thuộc mới. Tôi sẽ không xem xét sử dụng nó trên một dự án mới với bất kỳ kích thước nào.
Câu hỏi: Có ổn không khi sử dụng DI của Poor Man để giới thiệu khả năng kiểm tra ứng dụng cũ và bắt đầu bóng lăn?
Ngoài ra, việc sử dụng DI của Poor Man như một cách tiếp cận cơ bản để tiêm phụ thuộc thực sự có phải là một cách có giá trị để giáo dục về nhu cầu và lợi ích của nguyên tắc này không?
Bạn có thể cấu trúc lại một phương thức có sự phụ thuộc cuộc gọi cơ sở dữ liệu và trừu tượng mà gọi đến phía sau một giao diện không? Chỉ cần có sự trừu tượng hóa đó sẽ làm cho phương thức đó có thể kiểm tra được do việc triển khai giả có thể được truyền qua quá tải hàm tạo.
Cuối cùng, một khi nỗ lực đạt được những người ủng hộ, dự án có thể được cập nhật để triển khai một thùng chứa IOC và các nhà xây dựng sẽ ở ngoài đó để thực hiện các tóm tắt.
I consider it a challenge to decouple code and introduce an IOC container into a legacy application
tất nhiên rồi Nó được đặt tên là nợ kỹ thuật. Đây là lý do tại sao trước bất kỳ cuộc cải cách lớn nào, nó thích hợp hơn là các nhà tái cấu trúc nhỏ và continuos. Giảm các lỗi thiết kế chính và chuyển sang IoC sẽ ít thách thức hơn.