Hãy để tôi biết rằng tôi là một fan hâm mộ lớn của tiêm phụ thuộc (DI) và thử nghiệm tự động. Tôi có thể nói cả ngày về nó.
Lý lịch
Gần đây, nhóm của chúng tôi vừa có dự án lớn này được xây dựng từ đầu. Nó là một ứng dụng chiến lược với các yêu cầu kinh doanh phức tạp. Tất nhiên, tôi muốn nó phải đẹp và sạch sẽ, điều đó đối với tôi có nghĩa là: có thể duy trì và kiểm tra được. Vì vậy, tôi muốn sử dụng DI.
Sức cản
Vấn đề là ở đội của chúng tôi, DI là điều cấm kỵ. Nó đã được đưa lên một vài lần, nhưng các vị thần không chấp thuận. Nhưng điều đó không làm tôi nản lòng.
Di chuyển của tôi
Điều này nghe có vẻ lạ nhưng thư viện của bên thứ ba thường không được nhóm kiến trúc sư của chúng tôi chấp thuận (nghĩ: "bạn sẽ không nói về Unity , Ninject , NHibernate , Moq hoặc NUnit , vì tôi sẽ cắt ngón tay của bạn"). Vì vậy, thay vì sử dụng một container DI thành lập, tôi đã viết một container cực kỳ đơn giản. Về cơ bản, nó kết nối tất cả các phụ thuộc của bạn khi khởi động, tiêm bất kỳ phụ thuộc nào (hàm tạo / thuộc tính) và loại bỏ bất kỳ đối tượng dùng một lần nào vào cuối yêu cầu web. Nó rất nhẹ và chỉ làm những gì chúng ta cần. Và sau đó tôi yêu cầu họ xem lại nó.
Phản hồi
Vâng, để làm cho nó ngắn. Tôi đã gặp phải sự kháng cự nặng nề. Đối số chính là, "Chúng ta không cần thêm lớp phức tạp này vào một dự án đã phức tạp". Ngoài ra, "Không giống như chúng tôi sẽ cắm vào các triển khai khác nhau của các thành phần". Và "Chúng tôi muốn giữ cho nó đơn giản, nếu có thể chỉ cần nhét mọi thứ vào một tổ hợp. DI là một sự phức tạp không cần thiết không có lợi ích".
Cuối cùng, câu hỏi của tôi
Làm thế nào bạn sẽ xử lý tình huống của tôi? Tôi không giỏi trình bày ý tưởng của mình, và tôi muốn biết mọi người sẽ trình bày lập luận của họ như thế nào.
Tất nhiên, tôi cho rằng giống như tôi, bạn thích sử dụng DI. Nếu bạn không đồng ý, xin vui lòng nói lý do tại sao để tôi có thể thấy mặt khác của đồng tiền. Sẽ rất thú vị khi thấy quan điểm của một người không đồng ý.
Cập nhật
Cảm ơn câu trả lời của mọi người. Nó thực sự đặt mọi thứ vào quan điểm. Thật tuyệt khi có một đôi mắt khác để cung cấp cho bạn thông tin phản hồi, mười lăm là thực sự tuyệt vời! Đây thực sự là những câu trả lời tuyệt vời và giúp tôi nhìn nhận vấn đề từ các khía cạnh khác nhau, nhưng tôi chỉ có thể chọn một câu trả lời, vì vậy tôi sẽ chỉ chọn một câu trả lời hàng đầu. Cảm ơn mọi người đã dành thời gian trả lời.
Tôi đã quyết định rằng đây có lẽ không phải là thời điểm tốt nhất để thực hiện DI và chúng tôi chưa sẵn sàng cho nó. Thay vào đó, tôi sẽ tập trung nỗ lực của mình để làm cho thiết kế có thể kiểm tra được và cố gắng trình bày thử nghiệm đơn vị tự động. Tôi biết rằng các bài kiểm tra viết là chi phí bổ sung và nếu có quyết định rằng chi phí bổ sung là không xứng đáng, cá nhân tôi vẫn sẽ xem đó là một tình huống có thể thắng vì thiết kế vẫn có thể kiểm tra được. Và nếu từng thử nghiệm hoặc DI là một lựa chọn trong tương lai, thiết kế có thể dễ dàng xử lý nó.