Tầm quan trọng của code review

Tháng Tám 28, 2022
Nga Pham

Đánh giá mã nguồn giúp các nhà phát triển học hỏi về cơ sở mã nguồn, cũng như các công nghệ và kỹ thuật mới để phát triển kỹ năng của mình.

Code review là gì?

Khi một nhà phát triển giải quyết xong một vấn đề, một nhà phát triển khác sẽ xem qua mã nguồn của họ và đặt ra các câu hỏi như:

  • – Có lỗi logic dễ thấy nào trong mã không?
  • – Tất cả các trường hợp trong yêu cầu có được thực hiện đầy đủ không?
  • – Các thử nghiệm tự động (automated test) có đủ cho mã nguồn mới không? Liệu có cần viết lại các thử nghiệm hiện tại để kiểm tra các thay đổi trong mã nguồn không?
  • – Mã nguồn mới có tuân thủ các quy ước viết mã (style guideline) hiện có không?

Đó là việc đánh giá mã nguồn, và công việc này nên được tích hợp trong quy trình hiện có của nhóm. Ví dụ, nếu một nhóm đang áp dụng quy trình phân nhánh theo task, hãy bắt đầu đánh giá mã nguồn sau khi tất cả các mã được viết và vượt qua các thử nghiệm tự động – nhưng trước khi mã được merge. Điều này giúp tiết kiệm thời gian của người đánh giá mã nguồn: nhà phát triển khác chỉ cần kiểm tra những gì quy trình tự động hoá bỏ sót và tránh cách quyết định kém chất lượng trên mã nguồn làm ảnh hưởng đến luồng phát triển chính.

Lợi ích của code review trong một nhóm Agile?

Mọi nhóm đều có thể hưởng lợi từ việc đánh giá mã nguồn, cho dù họ áp dụng phương pháp phát triển nào đi chăng nữa. Riêng đối với các nhóm Agile, họ có thể nhận được những lợi ích to lớn vì công việc cần được minh bạch trong toàn bộ nhóm – không ai là người duy nhất hiểu biết một phần cụ thể của mã nguồn. Nói một cách đơn giản, đánh giá mã nguồn tạo điều kiện chia sẻ kiến thức trên mã nguồn và trong nhóm.

Chia sẻ kiến thức qua đánh giá mã nguồn

Trọng tâm của tất cả các nhóm Agile là tính linh hoạt: khả năng giải quyết công việc tồn đọng và bắt đầu khởi chạy của tất cả các thành viên trong nhóm. Kết quả là, các nhóm có thể xoay quanh công việc mới tốt hơn vì không có ai là “con đường trọng yếu”. Các kỹ sư full-stack có thể giải quyết cả công việc front-end và công việc phía máy chủ.

Code review hỗ trợ ước tính tốt hơn

Ước tính là một bài tập của nhóm Agile, kết quả của bài tập này sẽ tốt hơn khi kiến thức về sản phẩm được phổ biến trong toàn bộ nhóm. Khi các tính năng mới được thêm vào mã nguồn hiện có, tác giả gốc của mã nguồn là người có thể cung cấp phản hồi và ước tính tốt. Thêm vào đó, bất kỳ người đánh giá mã nguồn nào cũng gặp phải một số vấn đề phức tạp liên quan đến các thành phần khác trong cơ sở mã nguồn. Việc đánh giá mã nguồn mang đến nhiều đầu vào thông tin hữu ích để các nhà phát triển có thể đưa ra các ước tính mạnh mẽ và đáng tin cậy hơn.

Code review cho phép thành viên nhóm được nghỉ

Không ai muốn trở thành người chịu trách nhiệm duy nhất trên một đoạn mã. Mặt khác, cũng không ai muốn đào sâu một đoạn mã họ không viết – đặc biệt là trong trường hợp khẩn cấp trên môi trường production. Các đánh giá mã nguồn chia sẻ kiến thức trong toàn nhóm để bất cứ thành viên nào cũng có thể bắt đầu và tiếp tục thực hiện công việc. Nhưng đây là điểm mấu chốt: không nhà phát triển duy nhất nào là con đường trọng yếu – có nghĩa là các thành viên trong nhóm đều có thể dành thời gian nghỉ ngơi khi cần thiết. Nếu bạn cảm thấy mình bị ràng buộc vào bàn làm việc trên hệ thống kiểm soát phiên bản (Version Control System – VCS), đánh giá mã nguồn là một cách tuyệt vời để tìm kiếm tự do – tự do nghỉ ngơi nếu cần thiết hoặc tự do dành thời gian làm việc trên một lĩnh vực khác của sản phẩm.

Code review cố vấn các kỹ sư mới

Một khía cạnh đặc biệt của Agile là khi nhóm có thành viên mới tham gia, các kỹ sư dày dặn kinh nghiệm sẽ là người cố vấn cho họ. Lúc này, việc đánh giá mã nguồn tạo điều kiện thuận lợi cho các cuộc trò chuyện về cơ sở mã. Thông thường, bên trong mã nguồn luôn ẩn chứa những kiến thức liên quan đến sản phẩm, những kiến thức này sẽ hiển thị trong quá trình đánh giá mã. Các thành viên mới hơn sẽ xem xét các vấn đề khó khăn trong mã nguồn từ một góc nhìn mới mẻ hơn. Chính vì vậy, việc đánh giá mã nguồn cũng đảm bảo các thông tin và ý kiến mới được tích hợp với kiến thức hiện có.

Hãy lưu ý rằng đánh giá mã nguồn không chỉ là việc một thành viên cấp cao trong nhóm đánh giá mã nguồn của thành viên cấp dưới. Việc đánh giá mã nguồn diễn ra trong toàn nhóm theo mọi hướng, vì kiến thức là không giới hạn! Việc đánh giá mã nguồn hữu ích đối với các kỹ sư mới, nhưng không có nghĩa nó chỉ có vai trò là một bài tập cố vấn!

Nhưng, code review tốn thời gian!

Chắc chắn sẽ mất thời gian, nhưng thời gian đó không phải là lãng phí!

Khi được thực hiện đúng cách, code review thậm chí còn tiết kiệm thời gian về lâu dài.

Dưới đây là ba cách để tối ưu hoá việc đánh giá mã nguồn.

Chia sẻ công việc

Tại Atlassian, nhiều nhóm yêu cầu hai lần đánh giá mã nguồn trước khi chúng được đưa vào cơ sở mã. Chắc hẳn bạn sẽ cảm thấy điều này rất tốn kém? Thật ra không phải vậy. Khi một nhà phát triển lựa chọn người đánh giá, họ sẽ tạo ra một mạng lưới rộng khắp cả nhóm. Bất kỳ hai kỹ sư nào cũng có thể đánh giá mã nguồn của nhau. Điều này đảm bảo không một ai là nút thắt cổ chai và thúc đẩy mở rộng phạm vi bao phủ mã nguồn (code coverage) trong toàn nhóm.

Review trước khi merge

Yêu cầu đánh giá mã nguồn trước khi hợp nhất (merge) đảm bảo không có mã nguồn nào chưa được xem xét. Nói cách khác, các quyết định có vấn đề được đưa ra vào lúc 2 giờ sáng và việc các kỹ sư thực tập sử dụng không đúng factory pattern sẽ bị phát hiện trước khi chúng có cơ hội tạo ra tác động lâu dài (và đáng tiếc) trên sản phẩm.

Tận dụng peer pressure

Khi các nhà phát triển biết mã nguồn của họ sẽ được đồng nghiệp đánh giá, họ sẽ nỗ lực hơn để đảm bảo mã nguồn vượt qua tất cả các thử nghiệm và được thiết kế tốt nhất có thể để việc đánh giá diễn ra suôn sẻ. Tâm lý đó cũng có khả năng giúp quá trình viết mã diễn ra suôn sẻ hơn và nhanh hơn, một cách tự nhiên.

Đừng đợi đến thời điểm đánh giá mã nguồn nếu bạn cần phản hồi sớm hơn trong chu kỳ phát triển. Phản hồi sớm thường tạo ra mã nguồn chất lượng hơn, vì vậy đừng ngại làm phiền người khác – bất cứ khi nào có thể. Điều đó không chỉ giúp công việc của bạn trở nên tốt hơn mà còn giúp đồng đội đánh giá mã nguồn của bạn tốt hơn, và duy trì chu kỳ hạnh phúc!

Đề xuất đọc thêm: Review code – 5 thực hành hay nhất

Theo Atlassian