2010-10-26 36 views
7

Tôi có một thư viện Tiện ích nhỏ chứa một số phương pháp tiện ích hữu ích đã được kiểm tra đầy đủ đơn vị. Hiện tại, thư viện của tôi không có phụ thuộc bên ngoài. Tôi đang đùa giỡn với ý tưởng thêm việc đăng nhập vào các lớp của tôi, điều này có thể hữu ích cho các mục đích gỡ lỗi. Nhưng điều này có nghĩa là gói thư viện đăng nhập cùng với dự án của tôi.Giữ một thư viện phụ thuộc miễn phí

Câu hỏi của tôi là: tôi có nên giữ nguyên phụ thuộc thư viện của mình không? Có lợi thế nào khi làm như vậy không?

Trả lời

0

Pro:

  • thư viện của bạn sẽ nhỏ hơn nhiều (rất có thể là bạn chỉ sử dụng một phần nhỏ của toàn bộ chức năng của bất kỳ phụ thuộc)
  • Không cập nhật địa ngục (như mã của bạn cần thư viện C, phiên bản 2, sản phẩm X cần mã của bạn và thư viện C, phiên bản 1).
  • Bạn sẽ không cần phải uốn cong thìa của bạn để ý tưởng bất chợt của người khác (nói thư viện bạn đi từ 1.x để 2.x -> bạn cần phải cập nhật mã của bạn)

Côn:

  • Mã bị lãng quên nếu sản phẩm X cũng cần thư viện
  • Bạn thông minh đến mức nào? Rất có thể là bạn không thể phù hợp với suy nghĩ, sự khôn ngoan và thời gian đã đi vào thư viện.

PS: Nếu bạn muốn hỗ trợ ghi nhật ký, hãy thêm slf4j vào mã của bạn; đây là API 30KiB cho phép người dùng mã của bạn sử dụng bất kỳ khung đăng nhập nào ở đó. Làm không sử dụng commons-logging.

1

Có nhiều lợi thế khi làm như vậy, không phải ít nhất khả năng chạy trên hầu hết mọi hệ điều hành.

Một cách để giữ cho thư viện của bạn phụ thuộc khá miễn phí, là yêu cầu nó được khởi tạo trước khi sử dụng. Sau đó, bạn sẽ trong your_lib_init(); hàm lấy một con trỏ hàm để ghi nhật ký phụ trợ. Điều này có nghĩa, chương trình phụ trợ có thể được viết lại cho bất kỳ nền tảng nào mà nó có thể chạy trên đó.

Ngoài ra, hãy tìm hiểu xem bạn có muốn thư viện hoàn toàn không phụ thuộc vào tất cả các phụ thuộc thư viện hay thư viện phụ thuộc vào đường dẫn lớp tiêu chuẩn. Nếu nó là Java thuần túy, nó sẽ chạy trên J2ME, Android, Java được biên dịch nguyên bản với GCJ và những gì không. Nếu nó sử dụng đường dẫn lớp, nó sẽ được di chuyển trên tất cả các triển khai đường dẫn lớp, trong thực tế bất cứ nơi nào OpenJDK chạy.

5

Tôi sẽ thêm giao diện ghi nhật ký có thể được sử dụng để tóm tắt quá trình ghi nhật ký. Sau đó, cho phép người dùng thêm ghi nhật ký qua giao diện này. Bạn cũng nên sử dụng giao diện này, và bạn nên cung cấp một 'NullLogger' được xây dựng vào thư viện của bạn sẽ được sử dụng nếu không cần đăng nhập khác.

Bạn có thể làm cho nó dễ dàng không sử dụng NullLogger bằng cách yêu cầu người dùng cấu hình một cái mới, chỉ đơn giản bằng cách cấu hình tập tin hoặc bằng cách khám phá thời gian chạy.

1

Sử dụng Java Logging. Đó là một phần của JRE/JDK do đó không cần thư viện bên ngoài.

Khám phá examples.

+2

Vâng, điều tốt nhất có thể nói về jul là nó được bao gồm. Hầu như mọi khung đăng nhập khác đều tốt hơn (dễ sử dụng, tùy chỉnh, cấu hình, nhanh hơn, mạnh hơn).Cũng lưu ý rằng nếu bạn sử dụng jul, hầu hết mọi người sử dụng thư viện của bạn sẽ phải đánh bại jul để đăng nhập vào khung đăng nhập mà họ sử dụng thay thế. –

+0

Bạn hoàn toàn đúng. –

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