Back to Explore
Viết code như thể con người sẽ bảo trì: Tại sao sự lười biếng với AI đang hủy hoại codebase của bạn

Viết code như thể con người sẽ bảo trì: Tại sao sự lười biếng với AI đang hủy hoại codebase của bạn

AI có thể viết mã nguồn cho bạn cả ngày, nhưng việc lạm dụng nó mà không kiểm soát chất lượng sẽ tạo ra những thói quen xấu, khiến codebase trở nên khó bảo trì và đầy rẫy các mã nguồn trùng lặp.

Website
Upvote this postSign in to upvote this article.

Bài viết được dịch và tổng hợp từ tin tức gốc. Bạn có thể đọc bài viết gốc bằng tiếng Anh tại đây.

Điểm tin nhanh:

  • AI tạo mã nguồn (LLMs) giúp tăng tốc độ phát triển nhưng dễ dẫn đến tình trạng code trùng lặp (DRY violation).
  • Việc chấp nhận các đoạn code kém chất lượng từ AI sẽ tạo ra "tín hiệu" sai lệch, khiến mô hình AI học theo thói quen xấu đó trong các lần prompt tiếp theo.
  • Hãy luôn viết code với tư duy con người sẽ bảo trì, vì AI không thể thay thế trách nhiệm kiểm soát chất lượng kiến trúc hệ thống của lập trình viên.

Sự trỗi dậy của các mô hình ngôn ngữ lớn (LLMs) đã thay đổi hoàn toàn cách chúng ta viết phần mềm. Bạn có thể yêu cầu AI tạo ra một API endpoint, một background job hay một webhook chỉ trong vài giây. Tuy nhiên, sự tiện lợi này đang tạo ra một "cái bẫy" vô hình: chúng ta đang dần từ bỏ các nguyên tắc kỹ thuật cốt lõi như DRY (Don't Repeat Yourself) chỉ vì AI có thể "gánh" phần cập nhật code cho chúng ta. Nhưng liệu đây có phải là cách tiếp cận bền vững?

Khi sự lười biếng trở thành nợ kỹ thuật

Trong quá trình phát triển, tôi nhận thấy mình thường xuyên yêu cầu AI tạo ra các đoạn kiểm tra quyền truy cập (access check) giống hệt nhau ở nhiều nơi khác nhau. Thay vì trích xuất chúng thành một hàm dùng chung (shared helper), tôi lại để AI tạo ra các đoạn code trùng lặp. Dưới đây là ví dụ về các đoạn code "rác" thường xuyên xuất hiện:

if (user.isActive && user.hasPermission('read') &&
    !user.isSuspended && account.status === 'open') {
    // do a thing
}

Việc copy-paste logic này không chỉ làm tăng dung lượng codebase mà còn khiến việc bảo trì trở nên ác mộng. Nếu bạn đang gặp vấn đề với việc kiểm soát chất lượng code, hãy tham khảo thêm về Chất lượng là ưu tiên hàng đầu: Nhìn lại hệ sinh thái DEV Community và giá trị cốt lõi cho lập trình viên để hiểu tại sao tư duy này lại quan trọng.

Vòng lặp phản hồi tiêu cực của AI

Sai lầm lớn nhất là nghĩ rằng AI hoạt động độc lập. Thực tế, LLMs đọc codebase của bạn như một nguồn dữ liệu huấn luyện thời gian thực. Các file bạn đang mở, các patterns bạn đã merge đều là tín hiệu (signals) cho AI.

Hành động của lập trình viên Hệ quả đối với AI Tác động đến codebase
Chấp nhận code trùng lặp Coi đó là tiêu chuẩn Codebase ngày càng cồng kềnh
Bỏ qua refactor Học theo thói quen xấu Nợ kỹ thuật tăng cao
Prompt không rõ ràng Tạo ra logic sai lệch Tăng rủi ro lỗi hệ thống

Khi bạn để AI thấy các đoạn code lặp lại, nó sẽ mặc định đó là phong cách của bạn. Lần tới, khi bạn yêu cầu tạo endpoint thứ năm, AI sẽ tiếp tục cung cấp một đoạn code lặp lại tương tự. Điều này tương tự như việc xây dựng một hệ thống mà không có sự kỷ luật, giống như những sai lầm khi không có Framework kỷ luật cho AI Agent: Giải pháp chấm dứt tình trạng mã nguồn hỗn loạn.

Lưu ý: Code smells không biến mất, chúng tích tụ. Mỗi "god function" hay đoạn code "tôi sẽ sửa sau" đều là một lớp tín hiệu xấu khiến AI ngày càng xa rời các best practices.

Tầm quan trọng của việc kiểm soát chất lượng

Nếu bạn không chủ động refactor, AI sẽ không bao giờ tự làm điều đó một cách hoàn hảo. Để tránh rơi vào tình trạng này, hãy áp dụng các nguyên tắc sau:

  1. Luôn trích xuất logic dùng chung thành các hàm hoặc module riêng biệt.
  2. Kiểm tra kỹ code do AI tạo ra trước khi merge vào repository.
  3. Sử dụng các công cụ hỗ trợ để phát hiện lỗi sớm, ví dụ như Xây dựng CLI tự động phát hiện Shadow API trong Express.js trước khi triển khai lên Production.

Đánh giá & Lời khuyên Thực tiễn

Từ góc nhìn của một Tech Lead, việc sử dụng AI để viết code là một con dao hai lưỡi.

  • Ưu điểm: Tăng tốc độ tạo mẫu (prototyping) và giảm thời gian viết các đoạn code boilerplate.
  • Nhược điểm: Dễ dẫn đến sự lười biếng trong tư duy thiết kế hệ thống, tạo ra codebase khó bảo trì và đầy rẫy sự trùng lặp.
  • Phạm vi ứng dụng: AI nên được dùng để hỗ trợ, không phải để thay thế tư duy logic. Hãy sử dụng nó để gợi ý giải pháp, nhưng bạn phải là người quyết định cấu trúc cuối cùng.

Mẹo hay: Hãy coi AI như một lập trình viên junior. Bạn cần review code của nó một cách nghiêm túc như cách bạn review code của đồng nghiệp. Nếu bạn không muốn người khác bảo trì đoạn code đó, đừng để AI đưa nó vào repo của bạn.

Câu hỏi thường gặp (FAQ)

Tại sao AI lại tạo ra code trùng lặp dù tôi không yêu cầu?

AI hoạt động dựa trên xác suất và bối cảnh (context). Nếu codebase của bạn đã có sẵn các đoạn code trùng lặp, AI sẽ ưu tiên bắt chước các pattern đó vì nó coi đó là "phong cách" của dự án.

Làm thế nào để ngăn chặn AI học theo thói quen xấu?

Cách tốt nhất là giữ cho codebase sạch sẽ. Hãy refactor ngay khi phát hiện code smells. Khi codebase sạch, AI sẽ tự động đề xuất các giải pháp sạch hơn.

Có nên tin tưởng hoàn toàn vào code do AI tạo ra?

Tuyệt đối không. AI có thể tạo ra code chạy được nhưng không tối ưu. Hãy luôn kiểm tra lại với các tiêu chuẩn bảo mật và hiệu năng, đặc biệt là khi làm việc với các hệ thống lớn như Chaos Engineering cho cụm GPU: Chiến lược tối ưu hóa hạ tầng AI hàng triệu đô la.

Kết luận

Viết code như thể con người sẽ bảo trì không chỉ là một lời khuyên, đó là sự sống còn của một dự án phần mềm chuyên nghiệp. AI là một công cụ mạnh mẽ, nhưng nó không có trách nhiệm với tương lai của hệ thống. Hãy là người cầm lái, kiểm soát chất lượng và đảm bảo rằng mỗi dòng code bạn merge đều là kết quả của tư duy kỹ thuật sắc bén. Đừng quên theo dõi hi_dev để cập nhật thêm những kiến thức chuyên sâu về quy trình phát triển phần mềm hiện đại.

Discussion (0)

You need to log in to post comments. Log In

No comments yet. Start the discussion!