Lợi nhuận:
- Khả năng sử dụng AI làm con mắt thứ hai trong việc đánh giá mã để đảm bảo tính dễ đọc, logic và bảo mật
- Khả năng lập kế hoạch các bước tái cấu trúc với sự hỗ trợ của AI mà không làm gián đoạn hành vi mã phức tạp
- Khả năng xác minh các đề xuất đánh giá và chỉnh sửa của AI bằng thử nghiệm và so sánh kiểm soát phiên bản
Trong công nghệ phần mềm, mã được đọc nhiều hơn là được viết. Một dòng mã được viết một lần nhưng được đọc, sửa đổi và xây dựng hàng chục lần trong suốt nhiều tháng. Đó là lý do tại sao việc xem xét mã (xem xét mã của người khác hoặc của chính bạn về tính logic, khả năng đọc và bảo mật) và tái cấu trúc (cải thiện cấu trúc mã mà không thay đổi hành vi của nó) là trọng tâm của kỹ thuật. AI trở thành “con mắt thứ hai” mạnh mẽ cho hai nhiệm vụ này: nó nhanh chóng gợi ý khả năng đọc, chỉ ra các vấn đề bảo mật và logic bị bỏ qua, đồng thời chia quá trình tái cấu trúc lớn thành các bước an toàn nhỏ hơn. Nhưng có một quy tắc quan trọng: việc tái cấu trúc không được thay đổi hành vi và điều duy nhất đảm bảo điều này là thử nghiệm.
Trong phần này, chúng ta sẽ xem cách sử dụng AI theo cách có cấu trúc để đánh giá mã, cách sửa mã phức tạp mà không vi phạm hành vi của nó cũng như cách quản lý nợ kỹ thuật (quyết định mã nhanh chóng nhưng tốn kém).
Các khái niệm: Nợ kỹ thuật: Các quyết định về mã được đưa ra hôm nay vì tốc độ khiến việc bảo trì trở nên khó khăn trong tương lai. Mùi mã: Bản thân các mẫu không phải là lỗi nhưng chỉ ra vấn đề (hàm quá dài, mã lặp lại). Hồi quy: Khi một thay đổi phá vỡ điều gì đó đã hoạt động trước đó.
Sử dụng AI trong đánh giá mã có cấu trúc
Khi thời gian có hạn, cần tập trung vào những vấn đề có nguy cơ cao nhất. Trình định dạng tự động xử lý các vấn đề về định dạng như thụt lề và giãn cách; Bạn phải dành sự chú ý của con người vào logic, bảo mật và hành vi của các trường hợp nguy hiểm. Khi đánh giá AI, hãy yêu cầu một danh sách ưu tiên chứ không phải một loạt các đánh giá đơn thuần.
- Đưa ra phạm vi. Mã nào, phải làm gì, nó hoạt động trong bối cảnh nào.
- Xác định trục ưu tiên Độ chính xác và bảo mật đầu tiên, khả năng đọc thứ hai.
- Yêu cầu chỉnh sửa cụ thể. “Tại sao lại xảy ra sự cố” và “cách khắc phục được đề xuất” cho mỗi phát hiện.
- Bạn xác minh những phát hiện. AI cũng tạo ra kết quả dương tính giả; Xác minh từng phát hiện dựa trên mã và thử nghiệm.
Lời nhắc đánh giá có cấu trúc: "Kiểm tra chức năng sau đây như một kỹ sư cấp cao. Liệt kê các phát hiện theo thứ tự quan trọng và đánh dấu chúng bằng các thẻ sau: logic/bảo mật [TIÊU CHUẨN], trường hợp/hiệu suất [TRUNG BÌNH], khả năng đọc/tên [THẤP]. Đối với mỗi phát hiện: lý do hỏi, đề xuất khắc phục cụ thể. KHÔNG BỎ QUA các vấn đề về định dạng/thụt lề, công cụ tự động sẽ xử lý vấn đề đó. Mã: [code]"
Lời nhắc đánh giá tập trung vào bảo mật: "Chỉ xem lại mã này vì mục đích bảo mật: thiếu xác thực đầu vào, nguy cơ lây nhiễm, thiếu kiểm soát ủy quyền, rò rỉ thông tin bí mật, mặc định không an toàn. Thêm một kịch bản tấn công mẫu vào mỗi phát hiện. Nếu không có vấn đề bảo mật, hãy nêu rõ 'Tôi không tìm thấy bất kỳ vấn đề bảo mật nghiêm trọng nào'. Mã: [code]"
Thận trọng: Chỉ vì AI nói "không vấn đề gì" không phải là bằng chứng cho thấy không có vấn đề gì. AI có thể tạo ra những kết quả âm tính giả; có thể bỏ qua một vấn đề bảo mật thực sự. AI đánh giá bổ sung, không thay thế, đánh giá của con người và kiểm tra bảo mật. Trong mã quan trọng về bảo mật, kỹ sư có thẩm quyền sẽ có tiếng nói cuối cùng.
Tái cấu trúc được bảo quản thử nghiệm
Nguyên tắc vàng của việc tái cấu trúc: kiểm tra trước, thay đổi sau. Trước khi sửa mã, cần có các thử nghiệm khóa hành vi hiện tại để bạn biết ngay nếu thay đổi có vi phạm điều gì đó. Đừng phá vỡ trật tự khi tái cấu trúc AI.
- Đưa hành vi hiện tại vào thử nghiệm. Nếu không, hãy yêu cầu AI tạo ra một “bài kiểm tra đặc tính” (bài kiểm tra nắm bắt hành vi hiện tại như hiện tại).
- Hãy khắc phục nó theo từng bước nhỏ. Việc kiểm tra phải luôn xanh ở mọi bước.
- Chạy nó sau mỗi bước. Bắt hồi quy sớm.
Lời nhắc về kế hoạch tái cấu trúc an toàn: "Hàm 60 dòng sau đây thực hiện quá nhiều thứ và khó đọc. Tôi muốn cấu trúc lại nó mà KHÔNG thay đổi hành vi của nó. Đầu tiên: liệt kê những trường hợp kiểm thử tôi cần để khóa hành vi hiện tại. Sau đó: chia quá trình tái cấu trúc thành các bước nhỏ, mỗi bước có thể được thực thi khi kiểm thử có màu xanh. Đừng viết mã vội, hãy đưa ra kế hoạch trước. Mã: [code]"
Nhắc yếu / Nhắc mạnh
YẾU: "Làm cho mã này tốt hơn." (Kết quả: không rõ cần cải thiện điều gì; AI thực hiện các thay đổi tùy ý, có thể thay đổi hành vi một cách âm thầm.) MẠNH MẼ: "Cấu trúc lại hàm tính toán thanh toán này để dễ đọc. Ràng buộc: hành vi phải giữ nguyên, giá trị trả về không được thay đổi. Chia hàm dài thành các hàm tiện ích có ý nghĩa, tăng số ma thuật thành hằng số được đặt tên. Liệt kê thay đổi từng mục và giải thích TẠI SAO mỗi mục không thay đổi hành vi. Mã: [code]"
Lời nhắc mạnh mẽ nêu rõ ràng buộc "hành vi phải giữ nguyên như cũ" và những gì cần được cải thiện. Nếu không có ràng buộc này, AI có thể thay đổi logic dưới danh nghĩa “cải tiến” và tạo ra sự hồi quy thầm lặng.
Quản lý nợ kỹ thuật
Cách tiếp cận
Trong thời gian ngắn
về lâu dài
phớt lờ nợ nần
tiến độ nhanh
Bảo trì tê liệt, đội chậm lại
viết lại mọi thứ
Phát triển tính năng thường trực
Lợi nhuận không chắc chắn, rủi ro cao
Tái cấu trúc được đo lường và bảo vệ bằng thử nghiệm
sự chậm lại nhỏ
Tốc độ bền vững
Cách lành mạnh nhất là cách thứ ba: nêu rõ khoản nợ (theo dõi nó trong danh sách), bắt đầu từ nơi gây tổn hại nhiều nhất và kiểm tra từng cách khắc phục. AI giúp ích rất nhiều trong việc xác định và ưu tiên các khoản nợ, nhưng khoản nợ nào phải trả là quyết định kinh doanh.
Hộp đựng nhỏ
Trường hợp 1 - Hồi quy im lặng. Một nhà phát triển yêu cầu AI “đơn giản hóa chức năng này”; AI dịch một điều kiện không chính xác và phép tính trả về bị hỏng. Vì không có kiểm tra nên sau 3 tuần sẽ xảy ra lỗi khi có khiếu nại của khách hàng. Nhóm thực hiện công việc tương tự bằng cách viết bài kiểm tra mô tả đặc tính trước tiên và phát hiện lỗi bằng bài kiểm tra màu đỏ trong lần chạy đầu tiên.
Trường hợp 2 - Con mắt thứ hai hữu ích. Trong quá trình đánh giá mã, AI nhận ra rằng việc ủy quyền người dùng chỉ được kiểm tra trong giao diện chứ không phải trên máy chủ. Đây là một lỗ hổng truy cập trái phép. Kỹ sư bổ sung tính năng kiểm tra ủy quyền phía máy chủ; Kiểm tra AI ngăn chặn sự cố bảo mật thực tế.
Trường hợp 3 - Dương tính giả. AI nói "biến này không bao giờ được sử dụng, hãy xóa nó đi"; Tuy nhiên, nó được sử dụng gián tiếp thông qua cơ chế phản ánh thay đổi. Nếu kỹ sư không xác minh đề xuất dựa trên thử nghiệm thì đề xuất đó sẽ bị xóa và xảy ra lỗi thời gian chạy. Mọi phát hiện của AI phải được xác nhận trước khi thực hiện.
Những lỗi thường gặp
- Tái cấu trúc mà không cần thử nghiệm. Không có gì còn lại để đảm bảo rằng hành vi được bảo tồn.
- Áp dụng các phát hiện AI mà không xác nhận chúng. Kết quả dương tính giả và âm tính giả đều xảy ra.
- Lãng phí thời gian của con người vào các vấn đề định dạng. Việc tập trung vào các nhiệm vụ có thể giải quyết bằng các công cụ tự động sẽ làm lu mờ những rủi ro thực sự.
- Lấy câu trả lời "Không vấn đề gì" làm sự đảm bảo. AI có thể vượt qua lỗ hổng; cần có sự xem xét của con người.
- Cố gắng trả hết nợ cùng một lúc. Việc viết lại lớn có nhiều rủi ro; Ưu tiên các bước được đo lường và bảo vệ bằng thử nghiệm.
Tóm lại
Việc xem xét và tái cấu trúc mã xác định tuổi thọ của mã. AI là công cụ tạo kế hoạch và con mắt thứ hai mạnh mẽ: cung cấp các phát hiện được ưu tiên, các kịch bản bảo mật và kế hoạch tái cấu trúc từng bước nhỏ. Nhưng việc tái cấu trúc không nên thay đổi hành vi và chỉ thử nghiệm mới đảm bảo điều này. Xác thực mọi phát hiện của AI dựa trên mã và thử nghiệm; Đừng lấy câu trả lời "không vấn đề gì" làm bằng chứng. Hiển thị nợ kỹ thuật và thanh toán nó theo các bước được đo lường và bảo vệ bằng thử nghiệm.
Nhiệm vụ ứng dụng
Lấy một dòng 40-70, chức năng hơi phức tạp mà bạn có (hoặc nhờ AI tạo ra). Trước tiên, hãy làm theo lời nhắc đánh giá có cấu trúc và sắp xếp các phát hiện theo [TIÊU CHUẨN]/[TRUNG BÌNH]/[THẤP]; Xác minh thủ công ít nhất một phát hiện đối với mã. Sau đó, với lời nhắc kế hoạch tái cấu trúc an toàn, trước tiên hãy tạo và chạy các thử nghiệm mô tả đặc tính, sau đó áp dụng tái cấu trúc theo các bước nhỏ và xác minh rằng các thử nghiệm vẫn có màu xanh ở mỗi bước.
danh sách kiểm tra
- [ ] Tôi đã cấu trúc bài đánh giá bằng các thẻ ưu tiên (quan trọng/trung bình/thấp).
- [ ] Tôi đã xác minh ít nhất một phát hiện AI dựa trên mã/kiểm tra.
- [ ] Tôi đã kiểm tra hành vi hiện tại trước khi tái cấu trúc.
- [ ] Tôi đã thực hiện các thay đổi theo từng bước nhỏ và chạy thử nghiệm ở từng bước.
- [ ] Tôi đã chỉ định ràng buộc "Hành vi phải giữ nguyên" trong lời nhắc.
- [ ] Tôi đã xác nhận rằng các phát hiện bảo mật cần có sự xác nhận của con người.