2008-10-22 26 views
61

Tôi vừa nhận ra từ một bài báo trong CACM rằng Doxygen làm việc với Java (và một số ngôn ngữ khác). Nhưng Java đã là công cụ Javadoc. Ai đó có thể giải thích những ưu và khuyết điểm của một trong hai cách tiếp cận là gì? Họ có loại trừ lẫn nhau không? Có một plugin Maven cho Doxygen không?Doxygen vs Javadoc

Trả lời

64

Doxygen có một số tính năng mà JavaDoc không cung cấp, ví dụ: các sơ đồ lớp cho các cấu trúc phân cấp và bối cảnh hợp tác, các trang tóm tắt hơn, duyệt mã nguồn tùy chọn (liên kết chéo với tài liệu), hỗ trợ thẻ bổ sung như @todo trên một trang riêng biệt và nó có thể tạo ra định dạng TeX và PDF Nó cũng cho phép nhiều tùy biến trực quan.

Do Doxygen hỗ trợ các thẻ JavaDoc chuẩn, bạn có thể chạy Doxygen trên bất kỳ mã nguồn nào có nhận xét JavaDoc trên đó. Nó thường thậm chí có thể có ý nghĩa để chạy trên mã nguồn mà không có JavaDoc vì sơ đồ và duyệt mã nguồn có thể giúp hiểu mã ngay cả khi không có tài liệu. Và vì công cụ JavaDoc bỏ qua các thẻ không xác định, bạn thậm chí có thể sử dụng các thẻ Doxygen bổ sung mà không phá vỡ thế hệ JavaDoc.

Có nói tất cả điều này tôi phải thừa nhận rằng tôi đã không sử dụng Doxygen trong một thời gian dài. Tôi có xu hướng dựa nhiều vào IDE của tôi ngày nay để cung cấp cùng một hình ảnh và tôi thường không đọc JavaDoc dưới dạng các trang HTML nhưng nhập các tệp nguồn vào IDE của tôi để nó có thể tạo ra các bản phát hành JavaDoc và tôi có thể chuyển sang các định nghĩa. Đó thậm chí còn mạnh hơn cả những gì Doxygen cung cấp. Nếu bạn muốn có tài liệu bên ngoài IDE và rất vui khi chạy công cụ không phải Java thì Doxygen đáng để thử vì nó không yêu cầu bất kỳ thay đổi nào đối với mã Java của bạn.

+0

Với maven, bạn có thể tổng hợp javadocs và liên kết chéo chúng bằng cách sử dụng plugin trang web. Ngoài ra, có một doclet UML có thể được sử dụng để tạo ra các sơ đồ lớp mà bạn đang tham chiếu. Doxygen có thể rất chậm cho các dự án lớn và đòi hỏi một số vòng để nhảy qua để làm cho nó nhanh hơn – spy

15

Tôi chỉ sử dụng Doxygen với Java nếu bạn mới sử dụng Java và bạn đã sử dụng Doxygen trước đây, làm giảm đường cong học tập bạn muốn trải nghiệm với javadoc. Nếu bạn chưa từng sử dụng Doxygen trước đây, tôi sẽ gắn bó với javadoc, vì nó được thiết kế đặc biệt với Java. Nếu bạn không biết hoặc là một, và bạn làm việc trong C++ (hoặc các ngôn ngữ được hỗ trợ khác) nhiều như bạn làm Java, Doxygen là một lựa chọn tốt, vì bạn sẽ có thể sử dụng nó cho cả hai ngôn ngữ.

Cả hai công cụ đều dễ sử dụng, với một bộ tính năng tương tự. Cả hai đều có bổ sung (hoặc được xây dựng sẵn trong) cho NetBeans và Eclipse làm cho nó thậm chí còn nhanh hơn để tạo ra doc. Có rất nhiều chồng chéo trong kiểu nhận xét được sử dụng bởi mỗi kiểu, nhưng chúng không phải là chính xác là giống nhau, do đó bạn sẽ khó trộn chúng lại với nhau (bạn phải biết chi tiết của cả hai, bỏ qua bất kỳ tính năng nào cụ thể cho một hoặc các tính năng khác). Tôi chưa bao giờ sử dụng nó, nhưng có vẻ như là một Maven plugin for Doxygen.

+1

Đây là liên kết tới plugin Doxygen Maven: http://khmarbaise.github.io/doxygen-maven-plugin/ –

3

Tôi thích thực tế là với Doxygen, bạn có thể nhận được sơ đồ lớp được hiển thị trên cùng một trang với tài liệu. Ngoài ra, tôi thích thực tế là nó liên kết bạn trực tiếp với mã nguồn, nếu cần. Tôi không biết nếu javadoc có các tính năng này mặc dù.

+1

Có javadoc cũng có thể có sơ đồ lớp: http://www.yworks.com/en/products_ydoc .htm (không miễn phí mặc dù ... Tôi cố nhớ một phần mềm công cụ tương tự khác) – VonC

+1

http://java.dzone.com/articles/reverse-engineer-source-code-u –

+0

Bạn có thể sử dụng tài liệu APIViz miễn phí (http://code.google.com/p/apiviz/) để tạo sơ đồ lớp trong javadoc. –

2

Một lợi thế lớn của JavaDocs là chúng chỉ hoạt động. Tất cả mọi thứ cần thiết để xây dựng và xem chúng được bao gồm trong JDK mà bạn đã cần phải cài đặt để biên dịch các chương trình của bạn.

Doxygen, mặt khác có thể là một nỗi đau để thiết lập và hoạt động chính xác. nhưng nếu nó được thiết lập đúng, nó sẽ có thể tạo các tệp PDF, RTF và DocBooks, cũng như HTML. Theo mặc định, HTML không được tổ chức theo mặc định là JavaDocs vì index.html hiển thị một trang trống theo mặc định. Ngoài ra, các lớp nội tuyến và các thành viên tĩnh có thể cần các cờ đặc biệt để đưa vào tài liệu, và nếu bạn muốn tạo một tệp PDF, bạn có thể phải xử lý sự phức tạp của việc phân phối Linux không có lệnh pdflatex cần thiết (ví dụ: Ubuntu/Mint) vấn đề gần đây) vì vậy nếu bạn chỉ cần apt-get cài đặt nó và chạy bạn có thể nhận được một màn hình đầy lỗi ngay cả với một chương trình đơn giản. So với việc dễ dàng nhận javadoc tự động khi bạn cài đặt API, thiết lập Doxygen có thể là một trải nghiệm khốn khổ.Một khi bạn vượt qua những trở ngại, nó sẽ được linh hoạt hơn trong việc đối phó với các dự án liên quan đến nhiều hơn chỉ java, mặc dù.