Nếu bạn chỉ đang nói về việc tạo các sơ đồ cộng tác/kế thừa giống như Doxygen, bạn nên kiểm tra các IDE sẽ tự động làm điều đó cho bạn. Đối với tài liệu từ đầu hoặc điều chỉnh bằng tay, tôi sử dụng OmniGraffle (vì tôi đang sử dụng máy Mac) mà tôi khuyên bạn nên sử dụng.
Tuy nhiên, GraphViz và DOT có thể thực sự tiện dụng, không chỉ cho tài liệu, mà còn để gỡ lỗi và hiểu mã, đặc biệt đối với cấu trúc dữ liệu. Tôi thường không viết DOT bằng tay, nhưng DOT được tạo tự động có thể rất đáng để nỗ lực tối thiểu.
Một trong những nơi tôi đã tìm thấy GraphViz cực kỳ hữu ích là để hiểu và gỡ lỗi thuật toán cây tìm kiếm nhị phân. Tôi phát triển CHDataStructures.framework, một khung mục tiêu C nguồn mở, bao gồm một số loại BST. Tôi đã thực hiện hai phương pháp: -(NSString*)dotGraphString
trên lớp cha và -(NSString*)dotGraphStringForNode:
trên mỗi lớp con. Trong khoảng 30-40 dòng mã (phần lớn là ở dưới cùng của CHAbstractBinarySearchTree.m
), tôi đã thêm khả năng lặp đi lặp lại cây nhị phân và tạo biểu diễn DOT của nó, bao gồm thông tin cân bằng, nút màu đỏ hoặc đen, v.v. Với một chút cẩn thận, bạn có thể dễ dàng đại diện cho các nút được gửi null và hiển thị cây theo thứ tự sắp xếp thích hợp.)
Trong mã thử nghiệm của tôi, sau mỗi sửa đổi của cây, tôi gọi là dotGraphString
và lưu kết quả vào một .dot tập tin, dừng lại ở đó với một breakpoint, sau đó mở tập tin đó với GraphViz, đó là đủ thông minh để tái render đồ thị DOT khi tập tin được cập nhật. Cách tiếp cận này làm cho nó dễ dàng hơn nhiều để xem những gì đã xảy ra trong cây và phát hiện lỗi trong việc thực hiện một thuật toán đã cho. Cách tiếp cận này có thể được điều chỉnh khá dễ dàng đối với các loại cấu trúc dữ liệu khác nhau và thường nhanh hơn và dễ dàng hơn nhiều so với việc tạo giao diện người dùng chỉ để hình dung cấu trúc.
Nguồn
2009-06-10 16:41:51
Tôi đồng ý. Tôi không biết về mục đích tài liệu, nhưng tôi đã có thể tạo ra các đồ thị hữu ích theo chương trình trong nửa giờ. Ấn tượng của tôi là một giờ có lẽ là hợp lý cho những điều cơ bản. –
Tài liệu rất kém, thiếu hoàn toàn về các ví dụ ... Tôi không nghĩ bạn thực sự cần chỉ một giờ. Tôi đang cố gắng cả ngày để có được một số điều đơn giản về UML. – Thanks
Công cụ chỉnh sửa cho công việc: Graphviz sắp hết sức khủng khiếp để cố gắng thực hiện UML, bởi vì đó không phải là những gì nó được thiết kế. Nếu bạn cần để có thể nhanh chóng hiển thị các mối quan hệ giữa các mục, Graphviz sẽ là tuyệt vời. Nếu bạn phải đặt vật phẩm một cách chính xác, bạn sẽ ghét cuộc sống. –