2009-10-22 17 views
5

Tôi đang dùng mã người khác. Một số cách hay để tìm hiểu lập trình viên đã làm gì nhanh nhất có thể? Tôi đã chạy nó, bước qua nó và nhìn vào callstack. Tôi có thể làm gì nữa?Nhận mã của người khác

Xin lỗi tôi quên đề cập đến, nhưng có rất ít tài liệu và tôi đã cố gắng khắc phục các sự cố đơn giản. Cảm ơn!

+0

Đây phải là cộng đồng wiki. Đây là một câu hỏi chủ quan. – Joren

+0

Tôi sẽ nói rằng nếu bạn phải làm tất cả những điều này; các vấn đề không đơn giản như vậy. Chúc may mắn. –

+0

Đây có vẻ là tiêu chuẩn mà tôi hiện đang làm việc ... Bạn đang đi đúng hướng. Trong những lần như thế này tôi không bao giờ nói * Có * với bất cứ điều gì trả trước, tôi thường nói tôi sẽ thử. –

Trả lời

5

Thông thường, cách tốt nhất là bắt đầu làm việc trên mã sửa lỗi nhỏ. Bạn càng dành nhiều thời gian với nó là cách duy nhất để tìm hiểu cơ sở mã. Không có cách kỳ diệu nào để học một cơ sở mã. Nó sẽ mất vài tuần, vài tháng hoặc có thể là năm tùy thuộc vào sự phức tạp. Tuy nhiên đối với hầu hết các hệ thống kinh doanh chung chung một thời gian lên dốc là khoảng 6 tháng kiến ​​thức mã và 6 tháng riêng biệt kiến ​​thức ngành để thực sự hiểu tất cả.

5

Khắc phục sự cố đơn giản trong đó.

Chỉnh sửa: Sau đó khắc phục các sự cố lớn hơn và bắt đầu viết tài liệu và kiểm tra đơn vị, của các khu vực bạn hiểu. Xây dựng trên những khu vực đó, và một ngày nào đó bạn có thể hiểu toàn bộ hệ thống.

+0

Trong khi tôi đồng ý điều này có thể làm việc như một giải pháp ... Tôi ghét bandaids bandaiding. –

4

Tài liệu? Đọc chính mã, mà không cần chạy trong trình gỡ rối?

Ngoài ra, bạn đang làm những gì tôi sẽ làm.

+0

Tôi thường thấy rằng nếu mã không phải là tài liệu thì tài liệu có thể sai ... Nhưng nó có thể giúp bạn quay trở lại những gì mã "nên" làm. –

+1

Điều đó đúng, nhưng tài liệu có thể ở mức cao hơn mã, điều này ít nhất sẽ giúp dễ hiểu hơn về cách lớp X vừa với hình ảnh lớn hơn. – jprete

0

Tôi thấy rằng tôi sẽ không tìm hiểu mã hoàn toàn cho đến khi tôi bắt đầu sửa lỗi/sửa đổi nó. Nếu lập trình viên ban đầu vẫn còn đó, sau đó thảo luận về những thay đổi trước khi thực hiện chúng sẽ giúp ích.

1

Ghi nhật ký là tốt để xem mã nào hoạt động.

Nếu bạn có hệ thống phiên bản, bạn có thể truy cập và xem những gì thay đổi mà lập trình viên thực hiện cho những phần mã nào, duyệt qua một số lịch sử.

Đôi khi tôi thấy nó hữu ích bằng cách nào đó cố gắng hiểu các kiểu lập trình mã, điều này giúp tôi hiểu làm sao anh ta có thể nghĩ về một vấn đề và giải quyết nó.

6

Bắt đầu viết các bài kiểm tra đơn vị, vì điều đó sẽ giúp bạn sử dụng các lớp/phương pháp của mình, và bạn sẽ làm hai việc, tìm hiểu và tìm lỗi hoặc có sẵn công cụ trong trường hợp lỗi xuất hiện.

+0

Vấn đề với cách tiếp cận này là trước tiên anh ta phải biết (1) cách thức hoạt động, (2) cách thức hoạt động của nó, và (3) các điểm vào là gì. Anh ta có thể chưa biết đủ về điều đó để viết các bài kiểm tra đơn vị hiệu quả. : -/ –

+3

Bằng cách viết các bài kiểm tra đơn vị, anh ta sẽ học. Anh ta sẽ phải xem qua mã và nhận được một ý tưởng về cách các lớp được thiết kế. Nếu không có tài liệu và bạn phải tìm ra nó, cũng có thể viết các bài kiểm tra đơn vị và làm một cái gì đó hiệu quả trong khi học tập, và có lẽ sửa chữa một số lỗi trong quá trình này. –

+2

sẽ khó để viết các bài kiểm tra đơn vị cho một cơ sở mã không được thiết kế để thử nghiệm. Xem xét viết bài kiểm tra tích hợp cho vấn đề đó. –

1

Điều đầu tiên tôi cần làm là xem hộp thoại đơn giản nhất và mã của nó, chủ yếu để phân tích kiểu mã hóa và xem cách nhà phát triển muốn sắp xếp mã.

Một khi bạn biết kiểu mã hóa, và gần như mọi thứ sẽ tồn tại trong tệp (hoặc nếu mọi thứ được đặt ngẫu nhiên - thậm chí là hữu ích để biết), sẽ dễ dàng đi qua mọi thứ khác.

2

Không có dấu đầu dòng bạc nào trong cách bạn có thể hiểu mã của người khác một cách nhanh chóng. Đặc biệt nếu nó đầy hacks và không có tài liệu là avaiable.

Bạn nên cố gắng hiểu cấu trúc lớp học và thực thi luồng thông thường của phần mềm, với trợ giúp trình gỡ lỗi.

Đừng nhảy quá nhiều phần mã "oh, tôi nghĩ tôi biết phần này làm gì". Không, bạn không.Bạn sẽ ngạc nhiên về những gì "đổi mới" chúng ta có thể tìm thấy trong mã.

1

Nói chuyện với người dùng mã của người khác nếu bạn có thể (hoặc là người dùng cuối hoặc nhà phát triển khác phải làm việc với mã của mình). Điều đó sẽ cung cấp cho bạn cảm giác về chất lượng của mã người khác - được phát hành chỉ với một vài lỗi hoặc đã mất 6 tháng sửa đổi để có được đúng không? Nhà phát triển có cẩn thận khi tạo một ứng dụng được đánh bóng độc đáo hay là một mớ hỗn độn? Điều đó sẽ cung cấp cho bạn một số ý tưởng cho dù bạn chỉ cần điều chỉnh mã một chút hoặc bắt đầu thay thế các phần lớn của nó.

+0

Có sự khác biệt tinh tế giữa giao diện người dùng và chất lượng của mã đằng sau nó. Nó rất giống với tấm ốp vinyl. Một ngôi nhà có thể là một xác tàu tuyệt đối bên dưới tất cả những cái siding màu trắng tuyệt đẹp đó, nhưng hệ thống dây điện là một mớ hỗn độn, thối của khung và các đường ống bị rò rỉ. Nhưng chết tiệt, nó đẹp từ đường phố. –

+0

Điều đó chắc chắn có thể xảy ra. Nhưng tôi thấy rằng nói chung nếu bên ngoài có vẻ tốt và được xây dựng cẩn thận và chú ý đến từng chi tiết, khuôn khổ có thể được xây dựng theo cùng một cách giả định cùng một người đã làm cả hai. Tất nhiên, bạn cần phải biết ai chịu trách nhiệm cho những gì - bạn không thể sai lầm những người đặt trên siding cho hệ thống dây điện xấu. – TLiebe

1

Tôi thích bắt đầu thêm thử nghiệm vào các phương pháp của mã, nếu chúng chưa có. Tìm hiểu cách che mã sẽ cung cấp cho bạn rất nhiều thông tin chi tiết về các bảng mã, những gì đầu ra dự kiến ​​sẽ là, ...

1

Mọi thứ mọi người đều nói là chính xác trong việc học những gì mà trình mã đã thực hiện.

Một cách khác là xem chính chương trình đó. Chơi với ứng dụng ở mức độ sâu như người dùng sẽ hiểu và tự mình hiểu về chương trình. Một khi bạn hiểu được hệ thống cuối cùng kỹ lưỡng, nó sẽ dễ dàng hơn nhiều để tìm ra cách thức và lý do tại sao nó được viết.

0

Nó sẽ không làm tổn thương tài liệu những gì bạn tìm hiểu về lớp học, chức năng, v.v., chỉ để anh chàng tiếp theo (hoặc một người khác được thuê để làm việc trên cùng một công cụ).

Ngoài ra, khi tôi đã làm điều này trước đây, tôi đã tìm thấy nó tốt nhất để sử dụng chương trình khá một chút trước khi cố gắng để hiểu mã. Có thể âm thanh rõ ràng, nhưng nhiều hơn những gì bạn thấy sẽ có ý nghĩa sau đó. Thử nghiệm đơn vị, như những người khác đã gợi ý, cũng có thể giúp đỡ trong cùng một cách. (Hữu ích khi bạn cảm thấy tự tin đủ để tái cấu trúc, cũng vậy.)

0

Một điều giúp tôi tìm hiểu hệ thống nhanh hơn là tự viết tài liệu.

  • tôi nhận được một cái nhìn tổng quan
  • tôi sẽ thấy nhiều lỗi/quyết định thiết kế xấu. Mà làm cho nó dễ dàng hơn để đặt hàng và prio chúng. (thay vì chọn một lỗi không liên quan và giải quyết nó, tôi sẽ sửa những lỗi đó thực sự quan trọng)
  • Sau này tôi có tài liệu.
  • Tài liệu sẽ làm cho nó dễ dàng hơn để biện minh cho refactoring/viết lại cho phù hợp với của
0

Tôi nghĩ rằng biết những gì mã lệnh thực hiện, vấn đề nó được viết để giải quyết ở mức cao là một khởi đầu tốt. Với một trong đó có thể sau đó tinh thần, ở một mức độ cao quá cố gắng để hình dung như thế nào một vấn đề có thể được giải quyết với các loại công cụ được sử dụng.

Từ đó, xem xét mã sẽ đảm nhận một số ý nghĩa và sẽ giúp bạn làm theo ý tưởng của nhà phát triển ban đầu. Ngoài ra, bạn sẽ nhanh chóng phát hiện ra khi bạn đang bị lạc.

Tôi cũng tin rằng mã nên tự ghi là trải nghiệm của tôi hầu hết thời gian là tài liệu bên ngoài mã nhiều lần nhất là không đồng bộ với mã và có thể gây hiểu nhầm. Vì vậy, một vài ý kiến ​​ở đây và ở đó, tiêu đề lớp, bình luận phương pháp cũng sẽ giúp ích.

Lần đầu tiên tôi kế thừa mã của người khác, tôi bị chứng đau nửa đầu sau hai ngày, tôi là một cơn ác mộng.

Vì vậy, vui chơi.

1

Nơi đầu tiên tôi bắt đầu là cơ sở dữ liệu.

Theo kinh nghiệm của tôi, việc hiểu mô hình dữ liệu là chìa khóa để cung cấp cho bạn ngữ cảnh khi bạn thực hiện mã. (điều này giả định mô hình dữ liệu không phải là bảng thực thể chung chung-giá trị chung chung)

+0

Nếu datamodel là bảng khóa-giá trị chung thì bạn biết bạn có vấn đề ngay tại đó! – HLGEM

0

Tôi đã dành hầu hết năm cuối cùng làm việc trên mã mà tôi đã kế thừa từ người khác. Không có tài liệu và một số lượng lớn những gì hệ thống đã có nghĩa là để làm không được viết xuống bất cứ nơi nào, nhưng trong đầu khách hàng. Chìa khóa cho tôi là hỏi nhiều câu hỏi nhất có thể và thu thập thông tin từ mọi nguồn có sẵn. Tôi sẽ khuyên bạn nên biên soạn tài liệu của riêng bạn khi bạn đi.

Nhiều người có thể nói không viết lại mã, nhưng điều đó thường có thể là cách tốt nhất nếu mã được nhận xét hoặc mã hóa kém (không phải tự viết tư liệu). Đối với mã mà tôi đấu tranh với nó thường là giải pháp tốt nhất.

Một điều hữu ích khác cần có là một số loại tài liệu tiêu chuẩn trước khi bạn bắt đầu. Tài liệu chuẩn sẽ giúp bạn giải mã mã hoặc đưa mã lên thông số và giúp dễ hiểu hơn.

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