2009-09-21 19 views
7

Tôi thường được gửi đến các trang web mà tôi cần thực hiện đánh giá mã của hệ thống mà tôi không tham gia và sau khi xem xét sẽ không được tham gia lại. Tôi dành thời gian trong các bài kiểm tra công cụ thông thường và tìm kiếm các mẫu nhưng tại một thời điểm nào đó bạn chỉ cần đọc mã.Mẹo để giữ tập trung trong quá trình đánh giá mã

Sau 5000 dòng đầu tiên, nó trở nên không thể tập trung vào mã, đặc biệt vì nó là công cụ kinh doanh và do đó không phải là giải pháp thú vị nhất. Vì vậy, những lời khuyên là gì của họ cho ở lại tập trung vào mã trong quá trình xem xét mã?

+9

cà phê, cà phê, cà phê –

+5

Hơn 2 cốc cà phê mỗi ngày không được khuyến khích - không tốt cho sức khỏe. –

+5

@New trong thị trấn: xem xét mã của người khác cũng không tốt cho sức khỏe. – MusiGenesis

Trả lời

17
  • Nếu liên quan đến mã đang chạy, nó không phải là đánh giá mã.
  • Nếu đó là hơn 1000 dòng mã, đó không phải là đánh giá mã.
  • Nếu phải mất hơn 20 phút chuẩn bị, nó không phải là một đánh giá mã.
  • Nếu bản đánh giá mất hơn một giờ, nó không phải là đánh giá mã.

Có lẽ công ty của bạn nên sửa chữa quá trình xem xét mã ...

3

Cho đến nay tôi đang sử dụng như sau

  • Kiểm tra email của tôi & RSS tất cả vì vậy thường - tuy nhiên điều này tăng lên khi nhiều mã được xem xét.
  • Cà phê - uống ngày càng nhiều
  • Đi StackOverflow để giải đáp thắc mắc hoặc đăng câu hỏi;)
+2

+1 _Chuyển sang StackOverflow để trả lời câu hỏi hoặc đăng câu hỏi;) _ –

1

Đó là một vấn đề thực sự khó khăn. Tôi đoán câu hỏi của tôi cho bạn sẽ là: Bạn có thể làm gì để làm cho nó có khả năng hơn 5000 dòng mã đầu tiên bạn nhìn vào là những cái đúng để xem?

Nói cách khác, hãy tận dụng tối đa buck khi mức độ chú ý của bạn cao nhất. Bạn sẽ phải nhìn vào mã từ tầm mắt của một con chim để tìm ra điều đó.

Đối với mã sau đó, hãy thực hiện tổng quan ngắn gọn về nó, sau đó viết ra các câu hỏi mà bạn muốn trả lời. Bạn có thể sẽ có một số lo lắng nhẹ trong đầu của bạn khi bạn nhìn vào mã mà chỉ có thể đi ra nếu bạn viết ra các câu hỏi. Sau đó, nhìn vào mã với mục đích trả lời các câu hỏi.

1

Chiến lược nên giúp họ đi qua mã, giải thích những gì họ thấy. Mục đích là để a) sản xuất mã rắn, duy trì, đúng và b) học hỏi từ làm như vậy. Bạn sẽ ngạc nhiên về số lượng bạn học được khi xem xét mã của người khác. Có ý tưởng đọc mã là PAINFUL, nhưng trong thực tế nó là một cơ hội cho kinh nghiệm giáo dục tuyệt vời, và nó cung cấp cho bạn những ý tưởng về những gì để tìm cho ra trong tương lai.

Tất nhiên quá nhiều thứ là điều xấu và tôi đã thấy các nhà phát triển đã phải thực hiện đánh giá mã trong 3 tháng liền. Họ HAD để nghỉ ngơi, sửa lỗi, kiểm tra email, nhảy xung quanh - mọi thứ chưa được xem xét.

Có lẽ hãy dành thời gian này để tìm hiểu thêm về dự án, cách hoạt động và có thể làm cho một số phần nhàm chán thú vị hơn khi chúng có ý nghĩa hơn với bạn. Nói chuyện với các nhà phát triển của mỗi mô-đun, hỏi họ những gì nó làm tốt, và những gì các bộ phận họ đang lo lắng về.

Và tất nhiên, caffeine;)

11

Làm một số lượng nhất định các bài tập cho mỗi khối mã mà bạn xem lại (như 20 situps phần nghìn dòng mã, hoặc một cái gì đó như thế). Bạn có thể thêm những thứ nhỏ như làm 5 pushups cho mỗi bình luận vô dụng mà bạn nhìn thấy, hoặc 10 cằm cho mỗi chức năng trùng lặp mà bạn tìm thấy. Hoạt động thể chất giữ cho tâm trí tập trung, và đưa ra trạng thái của hầu hết các mã trên thế giới, bạn sẽ bị xáo trộn nghiêm túc trong thời gian không.

Cảnh báo: không được khuyến nghị cho ASP cổ điển. Đau tim và đột quỵ sẽ là không thể tránh khỏi.

+7

ý tưởng hay, yêu thích cảnh báo;) –

+2

trong khi tôi thích câu trả lời vui, đây không phải là câu trả lời thực sự cho câu hỏi OP - anh ấy nói: "Tôi thường được gửi đến các trang web nơi tôi cần thực hiện đánh giá mã của hệ thống mà tôi không tham gia vào "... bạn không thể làm điều đó tại trang web của khách hàng ...: P – eglasius

+0

Freddy: trừ khi bạn là nhà tư vấn giảng dạy kỹ thuật tập trung. –

1

Tôi không khuyên bạn nên chuyển ngữ cảnh.Khi bạn phân tích mã người nước ngoài phức tạp, bạn phải giữ rất nhiều thông tin trong đầu. Không giống như trong thế giới hệ điều hành, việc chuyển đổi ngữ cảnh không chỉ mất thời gian, mà còn cho phép bạn quên đi những gì bạn vừa đọc nhưng chưa nhớ.

Điều gì thực sự giúp bạn làm điều gì đó bằng tay. Viết bình luận trong mã, giải thích những gì nó làm. Để lại ghi chú khi bạn nhìn thấy một cái gì đó bất thường. Các câu hỏi phác thảo và TODO đánh dấu để quay lại sau. Sử dụng các màu khác nhau cho chúng.

Điều này sẽ giúp bạn 100% thời gian bận rộn và tập trung. Và nó cũng sẽ hình dung sự tiến bộ của bạn và cổ vũ bạn!

1

Tôi muốn bạn có đồng đánh giá cùng một lúc. Điều này cải thiện cả tốc độ và hiệu quả.

+0

Ghép nối giúp. Mười lăm nhân vật! – gmoore

3

Trừ khi bạn rất may mắn, bạn đã có nhiều phản hồi trong 5k dòng mã đầu tiên.

Kiểm tra this sách điện tử trên solid.

Đừng chỉ tập trung vào một nhóm lớp học bị cô lập. Bắt đầu từ mức sử dụng cấp cao nhất lúc đầu (cấp độ giao diện người dùng - nếu có nhiều tầng cũng đi đến ranh giới). Chọn một vài luồng quan trọng và theo luồng vào các phần nội bộ của hệ thống. Chọn một vài lớp có vẻ như có các vấn đề mà bạn thấy trên đường đi, và sau đó sẽ xem xét toàn bộ các lớp đó.

Đặc biệt chú ý đến các vấn đề có tác động nhiều nhất là tương tác trò chuyện giữa các tầng, tải tập dữ liệu db lớn, thực hiện nhiều chuyến đi khứ hồi, trang lớn hoặc tài nguyên trong đó. Bạn có thể muốn giới hạn sự chú ý đến các mục khác nếu có.

1

Bạn có thể thực hiện đánh giá theo cách từ trên xuống không? Xem lại cấp cao nhất (phương pháp chính?) Và viết nhận xét về điều đó. Sau đó, khoan xuống một bước trong mỗi lớp trừu tượng và nhận xét về điều đó. Đôi khi tôi khoan thẳng xuống 14 cấp độ của phương pháp và hoàn toàn bị mất khi tôi trở lại. Việc giữ cho đánh giá của bạn rộng có thể hữu ích.

Có thể làm điều đó trong một IDE sẽ là tốt nhất để bạn có thể trả lại mã.

Không phải điều tôi ghen tỵ. Tôi không thích đánh giá với các nhà phát triển lân cận.

Đối với quản lý thời gian, hãy thử phương pháp Pomodoro. Điều đó thực sự giúp tôi khi tôi phải đối mặt với một phiên mã hóa marathon.

2

Tôi tin rằng việc xem xét mã tốt nhất là khi nó tiến hành như thế này:

  1. Các coder nói về từng phương pháp; cùng một lúc. Trọng tâm là làm thế nào và tại sao nó làm những gì nó làm; không phải trên đầu vào hoặc đầu ra. Điều này có thể làm cho nó thú vị vì mọi người trong nhóm đều quan tâm đến mã.
  2. Trưởng nhóm đóng vai trò là người thi hành. Anh ta buộc bất cứ ai đi ra khỏi điểm để trở lại điểm.
  3. Nó được làm thành một truyền thống và được thực hiện DESPITE bất cứ điều gì (cần phải sửa chữa một lỗi prod nhỏ, chỉ cà phê caffein trong nồi coffe, mọi người không cảm thấy như nó vv) Sau đó mọi người nhận được vào một nhịp điệu và dòng chảy và xem xét mã không ngừng dần do các hoạt động khác.
0

Nếu mã trong Java, hãy sử dụng PMD hoặc CheckStyle. Vẻ đẹp của nó là bạn có thể viết các quy tắc của riêng bạn mà gắn cờ các vi phạm dựa trên các tiêu chuẩn mã trang web đó.

2

Tôi thường đi qua thông qua một tính năng cùng một lúc, gui xuống để db/lớp reporsitory.

Nếu nhận xét không có ở đó, tôi sẽ thêm nhận xét về những gì tôi nghĩ đang diễn ra.

Tôi sẽ giữ một bản đồ tư duy/wiki về sự hiểu biết của mình về hệ thống. Một bản đồ có xu hướng dễ dàng hơn để đón sau khi nghỉ ngơi.

Tôi sẽ nói về những phát hiện của tôi với các đồng đội khác.

2

Tôi nghi ngờ bất kỳ ai có thể trích xuất bất kỳ điều gì có ý nghĩa từ việc đọc 5000 dòng mã trong một ngày.

Quan điểm của tôi là đánh giá mã phải tương tác, điều này cũng giúp chúng trở nên thú vị. Nếu tôi chịu trách nhiệm xem xét mã của người khác, tôi không quan tâm đến cách tiếp cận họ đưa tôi đi qua nó. Họ có thể tập trung vào những thứ họ thích, hoặc những gì họ nghĩ rằng họ đã làm tốt, khi tôi thường quan tâm đến điều ngược lại.

Định dạng tôi thích là để tôi ngồi ở máy tính xách tay được kết nối với máy chiếu và hiển thị mã trên màn hình để tôi có thể dễ dàng nhảy từ phần này sang phần khác. Sau đó, trong khi đọc mã trên màn hình, hãy hỏi các câu hỏi của nhà phát triển: tại sao bạn làm theo cách này? bạn có luôn làm như vậy không? bạn đã quyết định thế nào về cấu trúc này? thử nghiệm đơn vị cho x ở đâu? - trong khi cũng thực hiện quan sát: có thể sử dụng nhiều ý kiến ​​ở đây, định dạng mã này không đáp ứng các tiêu chuẩn, v.v. Ngoài ra, có dev hoặc có thể một người nào đó khác trong phòng ghi chú về những điều mà nhà phát triển nên xem hoặc sửa sau hướng dẫn rõ ràng rằng các sự cố thường gặp phải được khắc phục trong tất cả mã của chúng, chứ không chỉ mã được xem xét.

Ý tưởng là không phải để xem mọi dòng mã. Đó là công việc của người quản lý nhà phát triển, hoặc có thể là QA. Ý tưởng trong đánh giá mã chủ yếu là kiểm tra lại các quy trình suy nghĩ đằng sau mã, bao gồm kiến ​​trúc, luồng, v.v., cũng như xem xét các khía cạnh chất lượng: hiệu suất, khả năng mở rộng và bảo mật.

Nếu bạn cố gắng làm hoặc nhìn quá nhiều, không chỉ bạn sẽ ghi ra, nhưng kết quả sẽ không hữu ích cho bất cứ ai.

0

Bạn nên có một số loại cấu trúc trong đánh giá mã của bạn vì việc đọc mã một dòng tại một thời điểm là điều không thể.

  • Tôi thường bắt đầu với các bài kiểm tra đơn vị hoặc ví dụ sử dụng (nếu tồn tại) để khi tôi xem mã, tôi sẽ biết cách sử dụng nó.
  • Sau đó, tôi khuyên bạn nên xem xét một khía cạnh/tính năng tại một thời điểm từ việc sử dụng và đi sâu vào triển khai.
  • Lặp lại nếu cần thiết

Bạn nên giới hạn kích thước của mã xét cho việc xem xét có hiệu quả - tại nơi làm việc của tôi, chúng tôi xem xét trước khi cam kết mã trở lại kiểm soát nguồn và bởi vì chúng tôi tiếp tục cam kết của chúng tôi, chúng tôi nhỏ cũng giới hạn thời gian xem xét.

Trong việc xem xét tôi đặt câu hỏi rằng sẽ trực tiếp tôi tại nơi thú vị/có vấn đề trong các mã:

  • gì quyết định đã bạn đã thực hiện khi lựa chọn một thực hiện cụ thể?
  • Lợi ích của một quyết định cụ thể đã được thực hiện là gì?
  • Nguyên tắc thiết kế/nguyên tắc thiết kế mà mã của bạn tuân theo?

Xem xét mã có nghĩa là để tìm hiểu và dạy bằng cách cải thiện mã. chỉ đọc 5000 dòng mã thẳng có vẻ sai ...

0

Tôi đồng ý với những người khác rằng những gì bạn đang làm không thực sự là "xem xét mã". Tôi nghĩ rằng điều quan trọng nhất là phải ghi nhớ những gì bạn đang tìm kiếm và tập trung vào đó - theo nghĩa đen có một danh sách kiểm tra các mục và câu hỏi bạn cần trả lời.

Kiểm tra mở của cơ sở mã mất thời gian LONG và không có cơ hội hiệu quả nếu sự tham gia của bạn được cho là ngắn ngủi.

Có một podcast khá hay về vấn đề đọc mã trên se-radio: link. Đây là một cuộc phỏng vấn với Dave Thomas (tác giả của "Người lập trình thực dụng"). Tôi nghĩ nó áp dụng cho những gì bạn đang cố gắng làm.

1

Có trong đánh giá mã, bạn cần phải đọc mã. Nhưng không chỉ 5K đường thẳng mà không có mục đích hoặc kế hoạch. Không có thắc mắc bạn không thể tập trung.

Công cụ phân tích tạo số liệu là những gì có thể tập trung bạn. Chạy các công cụ phân tích và sắp xếp kết quả dựa trên số liệu của chúng. Mỗi công cụ sẽ cho bạn biết "5 file hàng đầu, hoặc các chức năng" với những vấn đề về một vấn đề nhất định:

  • file dài
  • chức năng lâu
  • lớn fan-in hoặc quạt-out
  • phức tạp
  • vi phạm lint

Tôi đoán rằng bạn đang được mời gọi để đánh giá chất lượng mã trong một ngày. Vì vậy, hãy làm ở trên và sau đó bổ sung cho nó với tập trung đọc mã để tìm một ví dụ thực sự rõ ràng của từng loại vấn đề. Bạn sẽ không được đọc 5K đường thẳng, bạn sẽ làm điều đó với một mục đích, và để tìm kiếm một giải thưởng. Nó sẽ không nhàm chán và bạn sẽ được tập trung.

Chuẩn bị báo cáo của bạn với các chỉ số, tham chiếu đến các công cụ và khái niệm và ví dụ về từng loại sự cố trong cơ sở mã.

Tất cả được thực hiện và họ trả cho bạn số tiền lớn để cho họ biết những gì họ có thể đã biết nhưng không muốn thừa nhận với chính họ.

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