Làm thế nào để tốt hơn trong việc xem xét mã?


11

Đầu tiên tôi tin tưởng chắc chắn vào quy trình xem xét mã và luôn muốn người khác xem lại mã của mình. Câu hỏi của tôi thực sự xoay quanh làm thế nào tôi có thể thực hiện công việc tốt hơn trong việc thực hiện đánh giá mã cho người khác?

Tôi biết rằng để thực hiện đánh giá mã, bạn cần có kiến ​​thức về cách thức hoạt động của mã hiện tại và kiến ​​thức về tiêu chuẩn địa phương, cả hai điều tôi cảm thấy rằng tôi biết rất rõ. Tuy nhiên, tôi cảm thấy như tôi không bao giờ thực hiện đánh giá mã đủ tốt cho người khác. Ngoài ra tôi biết rằng một số người dường như làm mã đánh giá công việc tốt hơn những người khác vì vậy tôi tự hỏi đối với những người đánh giá mã tuyệt vời, các kỹ thuật mà bạn sử dụng là gì?


3
Bạn có thể đi vào lý do tại sao bạn cảm thấy như bạn không làm một công việc đủ tốt? Theo số liệu nào?
Đánh dấu Canlas


Đồng ý với @Mark: đánh giá mã về tính chính xác, kiểu dáng, đơn giản, hiệu quả, ...? Bạn có thể phát hiện ra lỗi bằng cách đọc mã? Bạn có thể phát hiện sự không nhất quán trong phong cách bằng cách đọc nó? và như thế.
rwong

Câu trả lời:


5

Không có cách nào để xem xét mã tốt hơn. Điều duy nhất bạn có thể làm là duy trì sự cải thiện đó bằng việc học hỏi và trải nghiệm.

Thông thường những điều tôi làm theo

- Use variables judiciously
- Keep things in scope loose boundaries will generate more errors
- Orient your language of coding in domain specific terms, they make more sense
- Keep loops to minimum 2 for each method if needed
- use ternary operators
- Arrange methods alphabetically
- Keep errors at handling ease
- write less but efficient code

Tôi nghĩ rằng có rất nhiều bạn có thể thêm vào nó.


2
Tôi không chắc chắn sắp xếp các phương pháp theo thứ tự abc là ý tưởng tốt. Tôi muốn nói rằng giữ cho chúng được sắp xếp theo chức năng của chúng sẽ tốt hơn. Có hai phương thức liên quan thực sự rất xa chỉ vì chúng được đặt tên là getS Something và setS Something không có vẻ là ý tưởng hay.
nuốt chửng elysium

2
TBH, các nhà khai thác ternary rất nhiều lần biến mã của bạn thành một thứ khó hiểu hơn là không có chúng (mặc dù dài dòng hơn).
nuốt chửng elysium

2
Tôi cũng không chắc lắm về ý của bạn về "viết mã ít nhưng hiệu quả". Tôi thường nói rằng không quan trọng bạn viết mã bao nhiêu miễn là rõ ràng - tôi không quan tâm cụ thể cho mã hiệu quả trong hầu hết thời gian.
nuốt chửng elysium

3

Hãy tự hỏi điều gì làm cho người khác trở thành một người đánh giá tốt cho bạn?

Ngoài ra, khi bạn đi qua mã;

  • dừng lại ở bất cứ điều gì bạn không hiểu bây giờ viết rằng một bình luận là cần thiết
  • xác định nếu nó phù hợp với các tiêu chuẩn mã hóa: dấu cách, dấu ngoặc, camelCase..vv
  • kiểm tra xem nó bao gồm tất cả các chức năng
  • làm kiểm tra logic đơn giản để xem nó có vượt qua các điều kiện biên không, v.v.

1
lý do cho downvote? làm ơn chỉ trích mang tính xây dựng
Ross

2
Viết hoa đúng cách.
Đánh dấu Canlas

1
hả np bro
Ross

1

Tôi chỉ nhắm đến

  • giải thích tại sao một sự thay đổi được đề xuất là cần thiết. Hãy chắc chắn rằng tôi hiểu lý do không chỉ là sửa chữa
  • đồng ý về định dạng mã - để mã của mọi người trông giống nhau / quen thuộc
  • chia sẻ danh sách các đặc điểm mã mà bạn muốn duy trì. Đưa nó lên wiki để mọi người không phải mắc lỗi một lần. Cập nhật nó thường xuyên.

Ngoài ra, "biết những gì cần tìm" chỉ đi kèm với kinh nghiệm, thực hành và đọc lên.


1
Tôi là một fan hâm mộ lớn của định dạng mã cơ học. Được thực hiện lý tưởng thông qua bộ tiền xử lý trong quá trình đăng ký, vì vậy mọi người có thể tránh tiêu chuẩn chính thức nếu nó thực sự làm họ khó chịu (kinh nghiệm cho thấy họ nhanh chóng từ bỏ)

1

Theo kinh nghiệm của tôi, cách tốt nhất là để cho nhóm lỗ để thực hiện đánh giá mã. Chúng tôi sử dụng một danh sách gửi thư cam kết trong mỗi dự án nơi bạn có thể theo dõi mọi thay đổi mã cho hệ thống kiểm soát phiên bản. Hầu hết các nhà phát triển của chúng tôi đã đăng ký vào danh sách gửi thư cụ thể của dự án của họ vì họ quan tâm đến việc thay đổi mã.

Khi ai đó nhận thấy một cách xấu trong mã nguồn mới, anh ta sẽ giải thích cho người đi làm cách anh ta có thể làm điều đó tốt hơn, nếu người đi làm là một thực tập sinh, hoặc anh ta bắt đầu một cuộc thảo luận về nó, nếu đó là một người đi làm có kinh nghiệm hơn.

Tất nhiên phương pháp này không đảm bảo rằng tất cả các mã mới được xem xét, đặc biệt là trong thời điểm căng thẳng khi không có thành viên nào trong nhóm giải trí để theo dõi từng thay đổi mã. Ngoài ra, không phải mọi nhà phát triển đều có trách nhiệm để đảm bảo rằng mọi nhà phát triển đều làm tốt công việc của mình, một mình bạn không thể đảm bảo rằng nó được xem xét. Nhưng, ít nhất trong các đội của chúng tôi, luôn có một người quản lý kỹ thuật chịu trách nhiệm về chất lượng kỹ thuật.

Tôi là một fan hâm mộ thực sự của đánh giá mã nếu họ tuân thủ các điểm sau:

  • mọi nhà phát triển đều có khả năng xem lại tất cả mã và lập luận theo ý kiến ​​của mình
  • không ai có quyền lạm dụng mã người khác
  • Mã xấu không chỉ kích hoạt một cuộc thảo luận mà cả mã tốt
  • các cuộc thảo luận kết thúc với niềm hạnh phúc cho mọi người tham gia
  • đánh giá xảy ra gần như trong thời gian thực, ít nhất là trước khi tính năng được hoàn thành

Điều tôi đã học được là nếu bạn là người xem xét từng dòng mã và nghĩ rằng bạn phải kiểm soát những thứ như chất lượng mã về định dạng mã hoặc hiệu quả mã thì bạn sẽ rất kém hiệu quả vì bạn làm những việc mà máy móc có thể làm bạn. Mục tiêu của bạn là sử dụng một hệ thống tích hợp liên tục để kiểm soát chất lượng xây dựng và mã của từng đóng góp mã. Nếu hệ thống này tạo báo cáo và gửi chúng cho những người đóng góp thì mọi thứ đều hoàn hảo.

Tôi phải thừa nhận rằng nếu bạn phải xem lại mã vì bạn phải kiểm soát hoặc để xếp hạng chất lượng của một lập trình viên, thì những đề xuất của tôi không có ý nghĩa gì. Trong trường hợp này tôi cũng sẽ không xem lại dòng mã nguồn theo từng dòng. Tôi sẽ xem xét những thứ như:

  • có vấn đề liên quan đến an ninh
  • API dự định được sử dụng
  • mã đã áp dụng kiến ​​trúc được chỉ định
  • anh ấy đã viết các bài kiểm tra hữu ích (nhưng chỉ khi anh ấy được hướng dẫn ngầm, tôi phải học)
  • Tài liệu
  • quá trình xây dựng
  • ... và một số nữa, có lẽ

Nếu bạn là một nhà phát triển có kinh nghiệm, bạn chắc chắn sẽ luôn tìm thấy những thứ như các vòng lặp mà bạn có thể làm với hiệu suất tốt hơn. Tất nhiên là hữu ích để giải thích những kiến ​​thức khác như vậy nhưng đây không phải là một phần của phiên đánh giá. Nếu có vấn đề hiệu suất đáng kể thì không phải vì anh ấy (hoặc cô ấy) đã sử dụng một biến thể kém hiệu quả hơn của một loại danh sách.

Bởi vì câu hỏi ban đầu là tại sao một số người dường như đánh giá tốt hơn như những người khác, tôi sẽ trả lời rằng những người này có thể xem trước khi đánh giá thực sự bắt đầu, có nghĩa là họ có thể tự chuẩn bị cho họ để họ biết chính xác những gì họ muốn xem lại .


1

[H] ow tôi có thể thực hiện công việc đánh giá mã tốt hơn cho người khác không?

Hỏi họ nhiều câu hỏi

Tôi biết rằng để thực hiện đánh giá mã, bạn cần có kiến ​​thức về cách thức hoạt động của mã hiện tại ...

Trên thực tế, không, bạn không cần phải biết mã trước để trở thành một người đánh giá tốt.

Một vài công việc trước đây, chủ nhân của tôi bắt đầu yêu cầu tất cả các đăng ký mã phải được đăng ký bởi người đánh giá. Tôi đã làm hầu hết các công việc GUI trong C và một trong những người đánh giá tốt nhất cho tôi là Bill bạn thân của tôi. Anh ta thành thạo C, nhưng chưa bao giờ thực hiện nhiều công việc GUI và đi sâu vào các đánh giá, anh ta không biết mã của tôi phải hoạt động như thế nào.

Nhưng anh ấy đã hỏi rất nhiều câu hỏi về nó, và phải giải thích để anh ấy có thể hiểu mã của tôi đã làm gì và tại sao lại kích thích rất nhiều suy nghĩ về phía tôi. Nó khiến tôi tìm thấy rất nhiều lỗi nhỏ kỳ lạ với các trường hợp cạnh, và cũng xem xét các phương pháp khác mà tôi có thể đã thực hiện. Ngoài ra, mặc dù tôi đã viết C được 22 năm tại thời điểm đó và nghĩ rằng tôi khá thành thạo, nó đã nhanh chóng cải thiện chất lượng mã của tôi.

Mặc dù tôi không còn làm việc ở đó nữa, tôi vẫn xem xét các khác biệt trước khi nhận phòng và tự hỏi: "Bill sẽ có câu hỏi gì về vấn đề này?" Và khá thường xuyên, tôi kết thúc việc thay đổi một cái gì đó như là kết quả.

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.