2010-01-15 20 views
5

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).

Trả lời

4

Tôi sẽ là rất không muốn bao gồm mã nguồn trong dự án của riêng bạn. Có, người dùng của bạn cần phải thêm một tham chiếu khác ... nhưng điều đó có nghĩa là họ biết nó đến từ đâu. Có thể họ sẽ muốn sử dụng nó ở nơi khác - có thể họ sẽ sử dụng một dự án khác với cùng thư viện của bên thứ ba. Bạn không muốn kết thúc với nhiều bản sao cùng loại.

Ngoài ra, việc lưu giữ nó như một thư viện riêng biệt sẽ giúp bạn dễ dàng cập nhật và khi thư viện của bên thứ ba thay đổi.

một số dự án cung cấp cho bạn phiên bản "tệp nguồn duy nhất" rõ ràng của thư viện để dễ dàng nhúng trong dự án. (Ví dụ: linqbridge) Điều đó thay đổi mọi thứ một chút - vào thời điểm đó, tôi nghĩ sẽ hợp lý hơn nếu đưa nó vào nếu bạn muốn. Nhưng đối với các dự án "bình thường", tôi chỉ thêm tham chiếu.

0

Trong trường hợp của bạn, tôi chắc chắn sẽ thêm tham chiếu chứ không phải nguồn.

Tôi không thấy lợi ích khi thêm nguồn. Khi bạn nói đúng, sẽ khó khăn hơn khi tích hợp các bản cập nhật. Ngoài ra, để cập nhật, bạn cần cần để xây dựng lại.

Đề xuất của tôi: thêm tham chiếu và chỉ thêm nhận xét trong định nghĩa giao diện, nơi nhận thư viện và lý do bạn sử dụng nó.

Các vấn đề liên quan