2009-09-01 32 views
5

Đôi khi, người ta cần đào sâu vào mã của người khác, hiểu mã và có thể tái cấu trúc/sửa lỗi. Tôi tự hỏi bạn sử dụng công cụ/thực hành nào để làm điều đó? Nó không phải về bất kỳ ngôn ngữ hoặc nền tảng cụ thể nào, thay vì một số lời khuyên nói chung.
Bản thân tôi thấy rất hữu ích khi chạy mã được đề cập dưới trình gỡ lỗi (nếu có thể), hãy đặt các điểm ngắt và bước qua mã.
Ngoài ra tôi đã sử dụng một vài công cụ UML với các tính năng kỹ thuật đảo ngược để xem bức tranh lớn. Visualization hoạt động khá tốt đối với tôi.
Có một công cụ mà tôi đã sử dụng khá nhiều: Understand. Nó không phải là một công cụ UML, nhưng nó có một loạt các hiển thị cho mã. Ví dụ sơ đồ điều khiển dòng chảy cho một hàm, mà không phải là một phần của UML, nhưng đôi khi nó rất hữu ích.
Tôi đã nghe nói rằng đôi khi mọi người viết các bài kiểm tra cho mã họ muốn tìm hiểu, nhưng nó đã không làm việc cho tôi. Đôi khi mã tôi muốn hiểu không phải là rất dễ kiểm chứng.
Có các công cụ khác, như profilers, checkers phụ thuộc, logger vv. Có ai sử dụng nó với bất kỳ thành công nào không? Và làm thế nào?
Điều đầu tiên sử dụng là gì? Tiếp theo là gì?
Công cụ và các phương pháp hay nhất để hiểu mã của người khác

Trả lời

1

Tôi đã ở trong tình huống này trước đây ... Không vui lắm. Cách tốt nhất tôi đã tìm thấy là viết các bài kiểm tra đơn vị để bao gồm các lĩnh vực sẽ thay đổi. Ngay cả khi các thử nghiệm đã tồn tại, điều này cho bạn trải nghiệm với cả api và hành vi của mã bạn dự định tái cấu trúc. Ngoài ra, bạn có được nhiều thử nghiệm hơn để xác minh việc triển khai thay thế.

0

Bạn đang tìm kiếm cấu trúc cấp cao, như mô-đun, không gian tên và thiết kế lớp học? Hoặc bạn đang cố gắng hiểu nội bộ của các lớp học, ví dụ: các dòng mã cụ thể hoạt động như thế nào? Đó là hai loại công cụ phân tích khác nhau.

+0

Cả hai. Đối với tôi, việc hiểu mã là dễ dàng hơn khi tôi nhìn thấy một bức tranh lớn và sau đó đi xuống mức thấp. – Max

1

Thông thường, tôi chia các loại yêu cầu thành 2 phe:

  1. Fix lỗi, không phải là toàn bộ mã. Trong trường hợp này, tôi có xu hướng đọc mã và xem liệu tôi có thể dễ dàng đưa vào bản sửa lỗi mà không thực hiện các thay đổi quan trọng lớn hay không, ví dụ: thêm 5 dòng mã hoặc ít hơn. Đây là nơi mà những thay đổi được thực hiện giống như một cuộc tấn công phẫu thuật mà tác động tối thiểu để đạt được kết quả mong muốn.

  2. Cắt mã xuống và đưa ra nhiều thứ tốt hơn. Trong trường hợp này, không có cách nào tốt để thực hiện thay đổi hoặc có rất nhiều thay đổi nhỏ muốn được đưa vào một dự án nhỏ, nơi tiêu hóa tất cả mã là cần thiết và đây không phải là một thay đổi nhỏ nhanh chóng . Lấy một trang ASP và đưa nó vào khung .Net mới nhất sẽ là một ví dụ ở đây.

Xác định loại thay đổi nào đó đòi hỏi một chút thực hành và trải nghiệm những gì người khác có thể gọi, "Một điều nữa nếu bạn có thể ..." xem nó theo cách đó, ví dụ chúng ta có thể thêm một mô-đun nhỏ để ghi lại bất kỳ lỗi nào và gửi cho tôi một email khi có sự cố không xảy ra sau khi tất cả các yêu cầu khác được thực hiện như thế nào nếu mã không thể gửi thư làm.

0

Sắp xếp nền tảng cụ thể, nhưng ReSharper rất tuyệt vời để trêu chọc ý nghĩa ẩn của mã .NET. Tôi thích tính năng "Tìm Sử dụng Nâng cao" nơi bạn có thể tìm kiếm các bộ, nhận, triển khai, v.v.

1

Hãy kiểm tra nWire.Nó là một plugin Eclipse, hiện đang cho Java & PHP, phân tích mã của bạn và cung cấp các công cụ tìm kiếm, tìm kiếm và tìm kiếm mã. Công cụ này là về việc hiểu các liên kết trong mã của bạn: các cấu trúc phân cấp lớp, các lời gọi, các sự kiện và mọi thứ khác.

Tôi thấy nó rất hữu ích để đào vào đống mã (BTW, đối với tôi, ngay cả mã của riêng tôi trở nên xa lánh sau một vài tháng không chạm vào nó).

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