Là một kỹ sư phần mềm, việc đọc mã của người khác quan trọng như thế nào?


25

Tôi là một kỹ sư phần mềm vừa chớm nở (hiện là sinh viên năm thứ hai, chuyên ngành CS) và tôi thực sự đấu tranh để hiểu các chương trình của người khác. Tôi muốn biết liệu kỹ năng này (hoặc thiếu nó) có thể là một khuyết tật đối với tôi không, và nếu có, làm thế nào tôi có thể phát triển nó?


1
Bạn có cảm thấy bạn hiểu mã khi nó được giải thích cho bạn hay bạn chỉ học bằng cách thử và sai?
JeffO

1
Tại sao điều này được gắn thẻ 'phong cách mã hóa'? Có phải lý do bạn gặp khó khăn khi đọc mã vì nó được định dạng kém? Khả năng đọc mã không có nghĩa là bạn cần khả năng hiểu mã được định dạng rất kém hoặc bị xáo trộn. Chạy mã thông qua một công cụ định dạng trước nếu nó giúp.
Brandin

Chỉ cần đọc một bài báo sáng nay đã nhắc nhở tôi về câu hỏi này. Tại sao làm việc trên Chrome khiến tôi phát triển một công cụ đọc mã nguồn
Eric King

Đây là một câu hỏi hay! Tôi đã có một câu hỏi tiếp theo: nếu bạn làm việc chủ yếu bằng chính mã của mình (ví dụ như là một lập trình viên khoa học trong một dự án nhỏ), làm thế nào để bạn tìm thấy mã tốt để đọc? Điều này đã được hỏi trước đây: softwareengineering.stackexchange.com/questions/69892/iêu
Gaurav

Câu trả lời:


49

Đó là điều cần thiết.

Cách bạn phát triển nó là bằng cách viết mã của riêng bạn (rất nhiều mã), và vâng, đấu tranh thông qua việc đọc mã của người khác.

Vấn đề, tất nhiên, là không phải ai cũng nghĩ theo cách bạn làm. Tôi đã ở trong một lớp Java năm đầu tiên cách đây rất lâu và chúng tôi đã được giao một nhiệm vụ. Trái với những gì tôi tin (đó là câu trả lời sẽ hội tụ ba hoặc bốn giải pháp chung), mọi người trong lớp có một giải pháp duy nhất cho bài tập.

Nó theo sau rằng bạn nên đọc mã tốt .

Đây là một trong những lý do khiến các Mẫu thiết kế trở nên phổ biến và tại sao bạn nên nghiên cứu chúng. Các mẫu thiết kế cung cấp một từ vựng chung cho các lập trình viên để giao tiếp và điều chỉnh tâm trí của bạn để có những cách "tốt hơn" để giải quyết các vấn đề điện toán.

Bạn cũng nên nghiên cứu các thuật toán và cấu trúc dữ liệu.

Hệ quả: Bạn phải luôn phấn đấu để viết mã mà các nhà phát triển khác có thể dễ dàng hiểu được.


7
Hệ quả: Bắt đầu đơn giản bằng cách cố gắng viết mã mà bạn có thể dễ dàng hiểu :-)
gnasher729

4
Nói chung là một câu trả lời tốt, tiết kiệm cho các phần về các mẫu. Hầu hết các mẫu GoF (đó là những gì mọi người nghĩ đến khi bạn sử dụng thuật ngữ này) được thiết kế quá mức, quá mịn, quá tập trung vào OO hoặc chỉ là các mẫu chống đơn giản. Và sau đó dân gian xuất hiện ở đây để hỏi họ nên sử dụng mô hình nào trong số các mô hình này. Xin vui lòng, không bao giờ khuyên các nhà phát triển lãng phí thời gian của họ với các mẫu.
David Arno

Đối với các vấn đề nhỏ (giả sử, đảo ngược các số trong danh sách), các câu trả lời có thể sẽ hội tụ thành một số ít các giải pháp có thể. Bài tập tốt nên yêu cầu giải quyết nhiều vấn đề như vậy và sắp xếp các giải pháp cho những vấn đề đó theo một cách nào đó, vì vậy tổng số giải pháp có thể cho bài tập sẽ tăng lên rất nhanh.
Brandin

15

rất quan trọng.

Khi bạn tốt nghiệp và bước ra thế giới, hầu hết các dự án mà bạn sẽ làm việc sẽ có mã do người khác đóng góp. Lucky là lập trình viên dành toàn bộ thời gian cho các dự án của Greenfield!

Đó là một kỹ năng có được thông qua luyện tập và kiên nhẫn, và trong nhiều trường hợp, đó là một kỹ năng mà nhiều người không thực sự có nhiều cơ hội để làm việc cho đến khi họ tốt nghiệp và có được công việc đầu tiên đó. Thư giãn!

(mặc dù nếu trường của bạn có chương trình hợp tác, điều đó sẽ cung cấp cho bạn kinh nghiệm trước khi tốt nghiệp để làm việc cho các dự án lớn mà hầu hết được viết bởi người khác nó sẽ giúp bạn có được các khoản tín dụng học tập!


7

Đó là một kỹ năng chính , tùy thuộc vào chi tiết cụ thể về nơi bạn làm việc, nó thậm chí có thể quan trọng hơn việc tự viết mã.

Như các kỹ năng khác, thực hành làm cho hoàn hảo! Cố gắng đọc mã của lập trình viên khác, gỡ lỗi nó và điều gì giúp cá nhân tôi, đó là để cấu trúc lại hoặc cải thiện các đoạn mã nhỏ và mở rộng từ đó.


Ngoài ra, làm quen với một dự án nguồn mở mà bạn sử dụng và cố gắng hiểu làm thế nào mã bên trong hoạt động có thể hữu ích
RMalke

4

Có các kỹ năng riêng biệt trong cả đọc và viết mã.

  • Một là cú pháp. Biết một tuyên bố phương thức trông như thế nào.
  • Cái khác là ý định. Biết tại sao phương pháp đó ở đó và mục đích của nó là gì.

Đối với việc đọc so với viết. Có đọc là điều cần thiết.
Một vài câu châm ngôn giúp nhiều người trong chúng ta đó là:

  • Mã được đọc 10 lần (ít nhất) cho mỗi lần viết.
  • Người khác đọc mã thường là ... tôi trong tương lai đọc mã.
  • Tôi sẽ không bảo vệ kiểu mã của mình từ hơn 1 năm trước, nó đã được cải thiện kể từ đó.

ĐƯỢC. Vì vậy, đó là tất cả tuyệt vời. Bây giờ xuống những gì bạn có thể trải nghiệm.

omg, đây hoảng codebase khổng lồ với hàng chục ngàn dòng mã nguồn và các lớp học có hàng trăm đường dây dài với phụ thuộc điên và mỗi khi tôi cố gắng làm theo điều mà tôi phải giữ 10 cấp độ trong đầu tôi, vv, vv
Sound quen thuộc ? Vâng. Thở sâu. Thư giãn. Nó bình thường. Đó là những gì hệ thống sản xuất được làm bằng. Mọi người sống sót (và hoa mỹ) trong những tình huống dường như không thể hiểu được bởi vì:

  • các thử nghiệm (hy vọng) tồn tại và chúng cũng giúp ghi lại hệ thống.
  • lập trình viên cặp và thường nó mang lại nhiều hơn gấp đôi kết quả.
  • lập trình viên giỏi có thể nói rằng họ không hiểu cho đến khi họ hiểu.
  • những thay đổi thường chỉ là một hoặc một vài dòng mã giúp cô lập những gì cần kiểm tra
  • cơ sở mã phải mất nhiều tháng và thậm chí nhiều năm để làm quen với

Và cuối cùng, các lập trình viên giỏi viết các thông điệp cam kết có ý nghĩa khi cam kết thay đổi vào các hệ thống kiểm soát phiên bản nguồn. (Vui lòng thêm vào để trả lời)
rwong

1

Hầu hết các câu trả lời này tập trung vào tầm quan trọng của việc đọc mã để tự cải thiện. Tôi hoàn toàn đồng ý và tán thành nó.

Có một góc độ khác cần cảnh giác - ngay cả khi bạn là một thần đồng không thể hưởng lợi từ việc đọc các cách tiếp cận khác (không thể, nhưng để tranh luận ....), bạn vẫn cần biết cách đọc mã vì khái niệm về cơ bản không tồn tại trong môi trường đại học: phần lớn các dự án công nghiệp là các dự án trường màu nâu (nghĩa là trong hoặc tích hợp với một cơ sở mã trước đó).

Nhu cầu đọc mã chỉ để hiểu cơ sở mã hiện tại và các quy trình là có thật. Luôn luôn có thể hỏi các câu hỏi khác của nhà phát triển về mã, nhưng điều này chỉ có thể khiến bạn mất nhiều thời gian. Mọi người rời đi, chuyển đổi dự án, hoặc thời gian chỉ đơn giản là trôi qua. Các chi tiết cấp thấp mờ dần từ bộ nhớ và lập trình viên bảo trì áp dụng các bản vá. Tại một số điểm, không có nguồn sự thật duy nhất ngoại trừ chính mã.

Vệ sinh mã tốt, hướng dẫn phong cách, đánh giá mã và trợ giúp tài liệu, nhưng đến một lúc nào đó, mã là nguồn sự thật cho những gì xảy ra và cách duy nhất để tìm câu trả lời sẽ là tự mình đi lấy. Bên cạnh việc sử dụng nó trong phát triển bản thân, khả năng đọc mã là một kỹ năng riêng biệt với việc viết nó.


0

Hiểu mã của người khác là điều mà bạn không thể thoát vì rất có thể bạn sẽ làm việc theo nhóm ngay cả khi không ở trong nhóm, bạn sẽ google các công cụ khác nhau và bạn sẽ phải hiểu mã mẫu. Vì vậy, có nó là phải.

Điều tôi cảm thấy là mọi người đều có cảm giác đó có thể ít hơn so với những người đặc biệt khác khi bắt đầu, bạn hiểu mã của mình tốt hơn mã khác khi bạn dành nhiều thời gian với mã của mình hơn mã người khác khi bạn không chỉ đọc mà còn viết và cấu trúc nó trong tâm trí của bạn. Nếu bạn bắt đầu dành nhiều thời gian hơn với mã của người khác và trước tiên hãy thử xem loại cấu trúc / luồng nào đang được sử dụng, điều này chắc chắn sẽ khiến bạn hiểu mã tốt hơn.

Để làm cho quan điểm của tôi trở nên thuyết phục hơn nếu bạn có một số mã mà bạn đã viết một năm trước, hãy thử hiểu lại và tôi có thể chắc chắn rằng bạn sẽ mất nhiều thời gian hơn nhưng ít hơn mã khác vì bạn có ý tưởng về cách bạn cấu trúc mã.

Hy vọng sự giúp đỡ này, đừng thất vọng vì nó hoàn toàn bình thường. Dành nhiều thời gian hơn với mã và cuối cùng bạn sẽ nhận được nó.


0

Chà, tôi vừa được giao một dự án với khoảng 100.000 dòng mã được viết bởi một nhóm ở một quốc gia khác và tôi phải thực hiện một số thay đổi rất quan trọng đối với bản sao mã của họ trong những tháng tiếp theo, trong khi để lại nhiều mã chung nhất có thể.

Bạn cho tôi biết làm thế nào tôi có thể thực hiện công việc của mình mà không có khả năng đọc mã của người khác, nhanh chóng. Nếu bạn không thể đọc mã của người khác, bạn hoàn toàn bị mắc kẹt.

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.