Điều gì xảy ra với các lập trình viên thường xuyên nhất trong khi đọc mã của người khác? [đóng cửa]


8

Khi đọc mã của người khác, bạn có thường gặp khó khăn gì khi hiểu nó không, hay thông thường hơn là bạn đặt câu hỏi cho mã khác về việc nó bị sai / không hiệu quả / định dạng xấu (v.v.)?

Ai đó đọc những gì bạn đã mã hóa trong công việc đầu tiên của bạn


Bạn trở nên đồng hóa. Bạn trở thành một phần của Một.
Thomas Eding

1
Tôi phải nói rằng trong một môi trường chuyên nghiệp, bạn thường sẽ sửa các phần bị hỏng có xu hướng là phần tồi tệ nhất của mã. Kinh nghiệm của tôi là nó hầu như luôn luôn giống như phim hoạt hình của bạn. Nếu bạn đủ may mắn để làm việc ở đâu đó rằng chất lượng phần mềm rất quan trọng đối với thành công kinh doanh - và công ty đánh giá cao điều đó - thì kinh nghiệm của bạn sẽ tốt hơn nhiều. Nhưng việc sửa lỗi và mở rộng mọi thứ chắc chắn sẽ đưa bạn qua những phần tồi tệ nhất của bất kỳ cơ sở mã nào.
GlenPeterson

Câu trả lời:


19

Ngày nay tôi không gặp nhiều vấn đề khi đọc mã của người khác. Tôi đã thấy rất nhiều mã xấu, thậm chí tôi có thể chẩn đoán loại tiến hóa nào dẫn đến bất kỳ tôi tìm thấy.

Thường xuyên hơn không, mã xấu chuyên nghiệp là mã bắt đầu ổn, nhưng các thực tiễn, yêu cầu hoặc bộ kỹ năng tốt nhất được chuyển ra từ bên dưới nó. Đôi khi, đó chỉ là một người không tốt hoặc chưa quen với ngôn ngữ này, nhưng điều đó cũng khá rõ ràng (và không phổ biến trong một môi trường chuyên nghiệp). Tôi càng hiểu lý do tại sao mã rots, tôi càng ít đặt câu hỏi về năng lực của các lập trình viên khác.


9
+100 cho "tôi càng ít nghi ngờ về năng lực của các lập trình viên khác". Tôi nghĩ rằng thái độ đôi khi "rõ ràng là một thằng ngốc đã viết" này tạo ra một môi trường nơi những người mới sợ hãi đặt câu hỏi (hoặc "những người không ngốc" không đặt câu hỏi về thực tiễn của họ đủ), từ đó dẫn đến mã xấu.
Timothy Jones

1
@TimothyJones Bạn có nhận ra rằng thực sự có thể thưởng +100, bằng cơ chế tiền thưởng?
Dawood ibn Kareem

1
@DavidWallace Tôi đã quên, cảm ơn. Tuy nhiên, sau đó tôi sẽ không thể bình luận thêm nữa. Có lẽ tôi sẽ quay lại và làm điều đó khi nó không phải là tất cả đại diện của tôi.
Timothy Jones

3
Điều tồi tệ nhất là khi bạn nói, "Rõ ràng là một thằng ngốc đã viết điều này" ngay trước khi bạn nhận ra rằng bạn đang xem mã của chính mình!
GlenPeterson

1
@GlenPeterson, Không, tôi muốn nói điều tồi tệ nhất là khi người viết nó đứng ngay cạnh bạn ...
Svish

9

Đây có thể là kết quả của quá trình phát triển này .

Trong 2 năm qua tôi đã làm việc với mã người khác. Tôi đã gỡ lỗi nó, sửa lỗi và cải tiến. Theo kinh nghiệm của tôi, tôi thường nghĩ rằng mã là xấu, đầy lỗi, chậm, tiêu tốn nhiều bộ nhớ hơn mức cần thiết, sử dụng các khái niệm lập trình không phù hợp, định dạng thực sự xấu (điều này khó sống), không được nhận xét và luồng logic là một lộn xộn. Điều gì sẽ xảy ra nếu tôi nói với bạn rằng tôi đã tìm thấy một hàm với 5k dòng mã?

Vì vậy, theo kinh nghiệm của tôi, tôi thường đặt câu hỏi về chất lượng mã. Nếu một cái gì đó khó hiểu, bởi vì nó phức tạp, nó có ý nghĩa sau khi bạn hiểu nó. Nhưng nếu nó chỉ xấu thì nó sẽ luôn xấu.


4

Trả lời ngắn: Hầu hết chúng ta không thích nó hoặc rất quan trọng về lý do tại sao mã hóa được thực hiện theo cách này, và không phải là cách khác. Tuy nhiên, nhiều bạn đọc mã xấu của người khác, nhanh hơn bạn đánh giá cao mã được viết tốt :)

Mặc dù nghe có vẻ hiển nhiên nhưng cách tốt nhất để đọc mã của mọi người tốt hơn là: đọc mã của mọi người . Vấn đề là khi mọi người thường đọc mã của người khác, họ không cố gắng " mò mẫm " nó, tức là trở nên thân thiết với nó; họ làm tương đương với thơ đọc tốc độ.

Để tìm kiếm mã của người khác, bạn có thể thử như sau:

  • Tái cấu trúc mã.
  • Chọn một tính năng để thêm yêu cầu đi sâu vào mã.
  • Viết bài kiểm tra đơn vị toàn diện cho mã.

Tất cả các bước này sẽ buộc bạn phải đọc mã sâu hơn.

Ngoài ra còn có một số mẹo làm thế nào để tối đa hóa sự hiểu biết về cơ sở mã, mà bạn đã được giới thiệu để bảo trì và hỗ trợ:

Khi bạn có một ý tưởng cơ bản về những gì đang diễn ra, bạn có thể muốn xem xét kỹ việc lưu trữ dữ liệu (lớp lưu giữ lâu bền). Đó là một cách tuyệt vời khác để hiểu về những gì đang xảy ra, nhưng hãy chắc chắn rằng những thứ bạn đang học đang thực sự được sử dụng. Tôi có thể nhớ một vài lần thực sự đi đến tận cùng của một số lớp với cách tiếp cận này, nghĩ rằng tôi đã hiểu hệ thống - và sau đó nhận ra sau đó các lớp không được sử dụng.

Nó có vẻ như là một nhiệm vụ khó khăn - nó mất thời gian và không có công cụ ưa thích nào có thể loại bỏ nhu cầu về trí thông minh - nhưng nó cũng có thể rất bổ ích. Khi bạn đi, bạn có thể sẽ tìm thấy rất nhiều lỗi trong các trường hợp góc / cạnh và xem các cách để cải thiện mã. Một lời khuyên - đừng quá nặng nề trong việc tái cấu trúc / thay đổi cho đến khi bạn hiểu rõ về mã. Thông thường những gì trông giống như một sai lầm hoặc chỉ là mã xấu đơn giản khi bạn lần đầu tiên nhìn thấy nó, hóa ra là thiên tài tinh tế trong công việc sau đó, điều tra giác ngộ. Ngoài ra, loại bỏ mã không sử dụng là rất thỏa mãn và tuyệt vời cho bất kỳ nhà bảo trì nào trong tương lai. Của nguồn, với giả định rằng tất cả các cơ sở mã được kiểm soát phiên bản.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.