Tiêu chuẩn để xem xét mã là gì?
Đánh giá mã là quá trình ủy quyền một cách có hệ thống một hoặc một số nhà phát triển xem lại mã do nhà phát triển khác viết để phát hiện lỗi và cải thiện nó. Đánh giá mã thường được thực hiện bởi một nhà phát triển có kinh nghiệm xem xét các khía cạnh khác nhau bao gồm chất lượng và tính bảo mật của mã, chia sẻ kiến thức, cho phép cộng tác tốt hơn, xây dựng văn hóa đánh giá, tạo niềm tin cho Nhóm về mã họ đang làm việc Show
Chi phí đánh giá mãNgoài việc xem xét mã, có hai phương pháp nổi tiếng khác để hợp lý hóa quy trình phát triển
Không giống như các công cụ kiểm tra và phân tích, việc xem xét mã do con người thực hiện có thể được coi là một nhiệm vụ khói. Từ khói được sử dụng tương tự với thử nghiệm khói tôi. e đã thực hiện kiểm tra theo cách thủ công để nhanh chóng xác thực một điểm cụ thể. Test như vậy coi như khói vì khi code thay đổi thì phải thực hiện lại, y hệt như code review. Vì lý do đó, việc xem lại mã là một nhiệm vụ tốn kém vì nó tiêu tốn nguồn nhân lực và nó phải được lặp đi lặp lại sau mỗi lần thay đổi mã. Lợi ích đánh giá mãChi phí xem xét mã cao. Mặt khác, lợi ích của việc xem xét mã là có thật
Với việc xem xét mã, không chỉ mã kết quả trở nên tốt hơn mà mọi người đều cải thiện với tư cách là nhà phát triển. Những lợi ích liên quan đến con người không thể có được thông qua một thực hành khác. Tuy nhiên, họ có thể tạo ra sự khác biệt giữa một dự án thành công và một dự án thất bại. Do đó, bạn phải nghiêm túc xem xét mã có hệ thống để nhận thấy rằng Lợi tức đầu tư (ROI) của nó là thuận lợi Cách thực hiện đánh giá mãThông báo rằng một số mã đã sẵn sàng để được xem xétThường thì việc xem xét mã được tiến hành theo cách không chính thức. Khi một nhà phát triển kết thúc phiên mã hóa, anh ta sẽ thông báo cho một hoặc một số thành viên trong nhóm để xem lại khi họ có thể. Đây là một sự khởi đầu nhưng làm như vậy là không có hệ thống, không thể theo dõi cũng như không đo lường được Đánh giá qua vaiKhông giống như cách thông báo trước đây, đánh giá tổng thể liên quan đến đánh giá đồng bộ. Nó bao gồm việc yêu cầu một hoặc một vài nhà phát triển tham gia để trình bày cho họ công việc đã hoàn thành và thu thập nhận xét. Lý tưởng nhất là họ tham gia trực tiếp nhưng ngày nay, nhiều nhà phát triển làm việc tại nhà và việc đánh giá như vậy có thể được thực hiện từ xa. Đánh giá qua vai chịu cùng một nhược điểm không chính thức của cách thông báo trước đây. Tuy nhiên, nó khuyến khích nhà phát triển tham gia vào một cuộc thảo luận thực sự chứ không chỉ là một chuỗi thư khác, điều này tốt cho việc xây dựng nhóm Lập trình cặpLập trình cặp là một cách tiếp cận phát triển phần mềm Agile xuất phát từ XP (Lập trình cực đoan). Lập trình cặp bao gồm hai nhà phát triển nhóm với nhau trên một máy tính. Họ tham gia nỗ lực viết mã và kiểm tra. Đây là một hình thức đánh giá mã vì có một bàn phím duy nhất. một người đang xem lại mã được viết bởi người kia Lập trình cặp có một số lợi thế. Đây là một cách tuyệt vời để cố vấn cho một nhà phát triển cơ sở và phát hiện một số lỗi càng sớm càng tốt Mặt khác, các nhà phát triển thường đạt năng suất cao nhất khi họ ở một mình, trong vùng dòng chảy và không bị gián đoạn. Do đó, lập trình cặp có hệ thống có thể làm giảm năng suất và khiến các nhà phát triển ít nhiệt tình hơn. Mã được viết bởi một nhà phát triển duy nhất trong khu vực dòng chảy vẫn có thể được những người khác xem xét và cải thiện sau này Công cụ trợ giúp cho Đánh giá mãCông cụ đánh giá mã giúp rất nhiều để cải thiện quy trình đánh giá. Với công cụ đánh giá có thể trở nên có hệ thống. Chúng có thể được theo dõi và một số số liệu có thể được suy luận để cải thiện quy trình. Các yêu cầu kéo của Github hiện đang phổ biến để thực hiện hầu hết các nhu cầu đánh giá. Ngoài ra còn có các công cụ tinh vi hơn như SmartBear Collaborator với nhiều loại SCM (Quản lý kiểm soát nguồn) được hỗ trợ Tuy nhiên, nhược điểm của code review là chi phí cao vì nó đòi hỏi nhiều nỗ lực của con người. Đây là lý do tại sao nhóm phải đấu tranh để tự động hóa quá trình xem xét trên diện rộng để thu hẹp sự can thiệp của con người vào những điểm thiết yếu. Để làm như vậy, công cụ NDepend phân tích nhiều khía cạnh của mã như đặt tên, độ phức tạp, thiết kế, mùi mã, mức độ bao phủ mã bằng các bài kiểm tra… và tạo ảnh chụp nhanh. Hai ảnh chụp nhanh có thể được so sánh. Một số truy vấn dựa trên C# LINQ giúp dễ dàng truy vấn bất kỳ thứ nguyên nào trong vùng đồng bằng giữa hai ảnh chụp nhanh được so sánh. Dưới đây là một số truy vấn mẫu Trước bất kỳ đánh giá nào của con người, các nhà phát triển có thể buộc phải tránh làm cho các phương thức vốn đã phức tạp trở nên phức tạp hơn nhờ truy vấn bên dưới. Lưu ý tiền tố 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 // cảnh báo đếm > 0 từ m ở JustMyCode. Phương pháp ở đâu !m. IsAbstract && m. IsPresentInBothBuilds() && m. Mã đã thay đổi() && m. Phiên bản cũ hơn(). Độ phức tạp theo chu kỳ > 6
hãy delta = m. Độ phức tạp theo chu kỳ - m. Phiên bản cũ hơn(). Độ phức tạp theo chu kỳ ở đâu delta > 0 theo thứ tự delta giảm dần chọn mới { m, m. Phiên bản mới hơn(). Độ phức tạp theo chu kỳ , delta , } Có thể dễ dàng viết một quy tắc để buộc mã bao phủ 100% bằng các thử nghiệm trên tất cả các lớp mới được viết. Nhưng chắc chắn các nhà phát triển sẽ thấy nó hơi cực đoan vì một số mã như mã UI khó có thể được kiểm tra Tuy nhiên họ chắc chắn sẽ chấp nhận quy tắc này. Các loại đã từng được bao test 100% vẫn nên được bao 100%. Chúng ta có thể tự hào khi một lớp được bao phủ 100% vì điều đó có nghĩa là lớp đó được thiết kế tốt vì nó có thể kiểm tra đầy đủ. Phạm vi bảo hiểm 100% cũng có nghĩa là nếu lớp có lỗi, có thể dễ dàng điều chỉnh các bài kiểm tra đơn vị để sao chép nó nhằm sửa lỗi. Sau khi sửa lỗi, với phạm vi bảo hiểm đầy đủ, thật dễ dàng để viết một hoặc một số bài kiểm tra để xác nhận sửa lỗi. Tuy nhiên, chúng tôi cần một cách để ngăn chặn các lỗi mới xuất hiện trong một lớp được bảo hiểm 100%. Và quy tắc này giúp ích rất nhiều vì nó phát hiện ra lỗ hổng mới trong phạm vi bảo hiểm của lớp. Kinh nghiệm cho thấy lỗ hổng mới trong phạm vi thử nghiệm hầu như luôn làm sáng tỏ một số sự thật thú vị – nếu không muốn nói là lỗi – đòi hỏi sự chú ý của nhà phát triển 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 // cảnh báo đếm > 0 từ t ở JustMyCode. Các loại ở đâu t. IsPresentInBothBuilds() && t. Phiên bản cũ hơn(). Tỷ lệ phần trăm Bảo hiểm == 100 && t. Tỷ lệ phần trăm Bảo hiểm < 100
từ m ở t . MethodsAndContructor ở đâu m. NbLinesOfCode> 0 && m. Tỷ lệ phần trăm Bảo hiểm < 100 && !m. IsExcludedFromCoverage
chọn mới { m, m. Tỷ lệ bao phủ, } Thông thường, đường cơ sở được chọn để vượt qua các quy tắc là ảnh chụp nhanh được thực hiện trên bản phát hành cuối cùng trong sản xuất. Nhiều quy tắc như vậy trên vùng đồng bằng vì đường cơ sở có thể được viết để hợp lý hóa đáng kể việc xem xét mã. Một số danh mục quy tắc mặc định có liên quan là
Ngoài ra, NDepend có thể giúp tập trung vào các vấn đề tin tức được giới thiệu kể từ cơ sở để tự động hóa nhiều khía cạnh hơn của đánh giá như đặt tên, cách sử dụng Hướng đối tượng hoặc cấu trúc mã. Điều này rất quan trọng vì không thể khắc phục tất cả các sự cố được phát hiện bởi một công cụ. Cách đúng đắn để sử dụng công cụ phân tích tĩnh là tập trung vào các vấn đề mới được đưa ra kể từ đường cơ sở Những gì cần tìm trong một đánh giá mãChúng tôi vừa giải thích rằng với một công cụ như NDepend, rất nhiều khía cạnh của việc xem xét có thể được tự động hóa. Tuy nhiên, kỹ năng và kinh nghiệm của con người vẫn cần thiết để phát hiện những cải tiến quan trọng
Không có công cụ nào có thể phát hiện ra loại lỗi vừa được liệt kê. Ít nhất là cho đến khi Trí tuệ nhân tạo đạt được một số tiến bộ to lớn trong việc hiểu mã. Điều này nhất thiết sẽ xảy ra nhưng vào năm 2021, nó vẫn chỉ là khoa học viễn tưởng. Thông tin thêm về chủ đề này có thể được đọc trong bài đăng này Trí tuệ nhân tạo có hỗ trợ mã hóa viên đạn bạc năng suất tiếp theo của nhà phát triển không? Phần kết luậnCác lợi ích của việc xem xét mã được cộng đồng hoan nghênh rộng rãi và nếu bạn không thực hành nó trong nhóm của mình, thì bạn có cơ hội cải thiện nghiêm túc. Tuy nhiên, vì việc xem xét mã đang tiêu tốn rất nhiều thời gian quý báu của con người, điều cần thiết là sử dụng các công cụ phù hợp để hợp lý hóa việc phối hợp và phê duyệt đánh giá cũng như để thực thi các sự kiện có thể được xác minh tự động từ chính mã đó. Bằng cách này, người đánh giá đối phó với mã đủ sạch và có thể tập trung vào các điểm thực sự đòi hỏi chuyên môn của họ
Patrick SmacchiaTrang mạng Bố tôi là một lập trình viên đầu những năm 70, tôi đã may mắn chuyển từ chơi Lego sang lập trình các trò chơi vi mô của riêng mình, khi tôi vẫn còn là một đứa trẻ. Kể từ đó tôi không bao giờ ngừng lập trình Tôi tốt nghiệp chuyên ngành Toán học và Kỹ thuật phần mềm. Sau một thập kỷ tư vấn và lập trình C ++, tôi bắt đầu quan tâm đến thương hiệu mới. NET vào năm 2002. Tôi đã có cơ hội viết cuốn sách bán chạy nhất (bằng tiếng Pháp) trên. NET và C#, được xuất bản bởi O'Reilly và cũng đã quản lý một số khóa học chuyên nghiệp và học thuật trên nền tảng và C# Trong những năm tư vấn của mình, tôi đã xây dựng chuyên môn về kiến trúc, sự phát triển và những thách thức bảo trì của các ứng dụng lớn và phức tạp trong thế giới thực. Có vẻ như spaghetti & di sản nguyên khối vướng víu liên quan đến mọi nhóm đủ lớn. Kết quả là, tôi quan tâm đến phân tích mã tĩnh và bắt đầu dự án NDepend vào năm 2004 Ngày nay, NDepend là Nhà cung cấp phần mềm độc lập (ISV) chính thức. Với hơn 12. 000 công ty khách hàng, bao gồm nhiều công ty trong danh sách Fortune 500, NDepend cung cấp cái nhìn sâu sắc hơn và toàn quyền kiểm soát ứng dụng của họ cho nhiều người dùng chuyên nghiệp trên khắp thế giới Tôi sống với vợ và hai đứa con sinh đôi Léna và Paul tại hòn đảo Mauritius xinh đẹp ở Ấn Độ Dương 3 loại đánh giá mã hóa là gì?Thực hành đánh giá mã được chia thành ba loại chính. lập trình cặp, đánh giá mã chính thức và đánh giá mã nhẹ .
Đánh giá mã nên bao gồm những gì?Điều cần tìm trong đánh giá mã . Thiết kế. Điều quan trọng nhất cần đề cập trong bài đánh giá là thiết kế tổng thể của CL. . chức năng. CL này có làm những gì nhà phát triển dự định không?. phức tạp. CL có phức tạp hơn mức cần thiết không?. bài kiểm tra. . đặt tên. . Bình luận. . Phong cách. . Tính nhất quán 7 bước để xem xét mã là gì?Đặt kỳ vọng sớm. Với nhà phát triển về việc chú thích mã nguồn của họ trước khi xem xét. . Xác định các mục tiêu có thể định lượng. . Có một hệ thống để nắm bắt các số liệu. . Lên kế hoạch đủ thời gian. . Tài liệu đánh giá ngang hàng. . Nghỉ giải lao 20 phút. . Xác minh rằng các lỗi đã thực sự được sửa. . Sử dụng Đánh giá mã như một hoạt động xây dựng nhóm Làm thế nào xem xét mã nên được thực hiện?9 Phương pháp tốt nhất để đánh giá mã . Biết những gì cần tìm trong đánh giá mã Xây dựng và thử nghiệm — Trước khi đánh giá Không xem xét mã lâu hơn 60 phút Kiểm tra không quá 400 dòng cùng một lúc Đưa ra phản hồi hữu ích (Không gây tổn thương) Truyền đạt mục tiêu và kỳ vọng Bao gồm mọi người trong quá trình xem xét mã |