Tôi đang làm việc trên một dự án thư viện .NET, có chứa một loạt các giao diện có thể được tiêu thụ bởi một dịch vụ mà tôi cũng đang tạo ra. Người dùng dịch vụ sẽ cung cấp các triển khai của các giao diện từ thư viện, sau đó được đưa vào ứng dụng dịch vụ.Khi nào nên bao gồm/sao chép mã của bên thứ ba, thay vì tham chiếu/liên kết mã đó?
Thư viện của tôi dựa trên thư viện của bên thứ ba, tất nhiên tôi sẽ cần tham khảo. Một trong các giao diện trong thư viện của tôi, sử dụng các kiểu từ bên thứ ba trong các chữ ký phương thức của nó. Điều này có nghĩa, những người triển khai giao diện cụ thể này cũng cần phải tham khảo thư viện của bên thứ ba. Mối quan tâm của tôi là điều này thêm ma sát, làm sao lãng người dùng khi thực hiện công việc mà cô ấy thực sự muốn làm - triển khai giao diện đó.
Một giải pháp cho vấn đề này sẽ được bao gồm các file nguồn từ các bên thứ ba thư viện xây dựng, chứ không phải là tham khảo nó như là một hội đồng riêng biệt. Tôi biết rằng điều này có thể khiến tôi khó khăn hơn trong việc tích hợp các bản cập nhật cho mã của bên thứ ba trong tương lai, nhưng ngoài ra, có bất kỳ lý do gì khiến tôi không nên xem xét tùy chọn này không? Khi nào bạn bao gồm mã của bên thứ ba thay vì tham chiếu nó?
Lưu ý: Thư viện của bên thứ ba được đề cập khá nhỏ (dưới 10 lớp, tổng số 1500 SLOC) và được cung cấp theo giấy phép nguồn mở làm dự án của tôi (Giấy phép Apache 2.0).