Cách đọc hiểu codebase lớn của người khác mà không bị ngợp

  • author-image

    Nguyễn Đình Cường

  • blog-tag
  • blog-comment 0 comment
  • created-date 09 Nov, 2026
blog-thumbnail

Ngày đầu vào công ty mới hoặc tham gia dự án mã nguồn mở, bạn mở dự án và thấy hàng trăm thư mục, hàng nghìn file. Cảm giác ngợp là bình thường. Không ai đọc hết từng dòng của một codebase lớn, điều quan trọng là có chiến lược để hiểu nó từ ngoài vào trong.

Bước 1: Hiểu dự án làm gì trước khi đọc code

  • Đọc README, tài liệu hướng dẫn, wiki: dự án giải quyết bài toán gì, ai dùng.
  • Dùng thử sản phẩm như người dùng cuối để biết các chức năng chính.
  • Hỏi đồng đội về bức tranh lớn: các thành phần chính, công nghệ sử dụng.
  • Xem sơ đồ kiến trúc nếu có; nếu không, tự vẽ một sơ đồ thô trong lúc đọc.

Bước 2: Chạy được dự án trên máy

Đọc code tĩnh khó hơn nhiều so với đọc khi có thể chạy. Hãy làm cho dự án chạy, dù mất thời gian cài đặt. Khi chạy được, bạn có thể đặt breakpoint, xem log, thử dữ liệu và quan sát. Nếu hướng dẫn cài đặt thiếu hoặc sai, ghi lại và cập nhật tài liệu là một đóng góp đầu tiên rất có giá trị.

Bước 3: Nhìn cấu trúc thư mục

Duyệt qua cấu trúc ở mức cao. Hầu hết dự án tuân theo quy ước của framework hoặc ngôn ngữ, ví dụ:

Thư mục thường gặpThường chứa
src/ hoặc app/Mã nguồn chính
tests/Các bài kiểm thử, nguồn học rất tốt
config/Cấu hình ứng dụng
routes/ hoặc controllers/Điểm vào của các yêu cầu
models/ hoặc entities/Các đối tượng dữ liệu
migrations/Lịch sử thay đổi cấu trúc database

Tên thư mục cho bạn manh mối về cách tổ chức: theo tầng (controllers, services, repositories) hay theo tính năng (users, orders, payments).

Bước 4: Theo dõi một luồng cụ thể từ đầu đến cuối

Thay vì đọc rải rác, hãy chọn một chức năng cụ thể và lần theo nó, ví dụ "người dùng bấm nút Đặt hàng thì chuyện gì xảy ra". Bắt đầu từ điểm vào (route, sự kiện giao diện), đi qua các tầng xử lý, đến database và quay về phản hồi.

  1. Tìm điểm vào bằng cách tìm kiếm văn bản hiển thị trên giao diện hoặc đường dẫn API.
  2. Dùng tính năng "Go to Definition" và "Find All References" của editor để di chuyển.
  3. Đặt breakpoint tại điểm vào và bước qua từng hàm để xem luồng thực tế.
  4. Ghi lại các thành phần đi qua thành sơ đồ nhỏ.

Sau vài luồng như vậy, bạn sẽ nhận ra các mẫu lặp lại và hiểu kiến trúc chung.

Bước 5: Dùng test và lịch sử Git làm tài liệu

  • Test: cho thấy cách các hàm, class được dùng và hành vi mong đợi. Đọc test của module nào bạn quan tâm trước.
  • git log và git blame: cho biết ai sửa dòng nào, khi nào và vì sao (qua commit message và PR liên kết).
  • Issue và pull request cũ: chứa thảo luận về quyết định thiết kế.

Bước 6: Làm một thay đổi nhỏ

Cách học nhanh nhất là sửa thật. Chọn một lỗi nhỏ hoặc một cải tiến vặt (đổi chữ, thêm validation) và đi hết quy trình: sửa, chạy test, mở pull request. Bạn sẽ học được quy ước code, quy trình review và các phần liên quan mà không bị áp lực của tính năng lớn.

Mẹo giữ đầu óc không quá tải

  • Đừng cố hiểu mọi thứ cùng lúc. Chấp nhận những "hộp đen" tạm thời và quay lại sau.
  • Ghi chép: tự viết sổ tay thuật ngữ, sơ đồ, câu hỏi chưa rõ.
  • Hỏi đúng lúc: tự tìm khoảng 15-30 phút, sau đó hỏi với câu hỏi cụ thể, kèm những gì đã thử.
  • Dùng công cụ tìm kiếm trong dự án: tìm theo tên hàm, chuỗi lỗi, tên cấu hình (Ctrl+Shift+F).
  • Chú ý quy ước: cách đặt tên, cấu trúc file, xử lý lỗi, vì viết theo cùng phong cách sẽ dễ được chấp nhận.
  • Nghỉ ngơi: não cần thời gian để tiêu hóa thông tin mới.

Cảnh giác với "code xấu"

Khi mới đọc, bạn sẽ gặp đoạn code khó hiểu và dễ vội kết luận "ai viết dở thế". Hãy nhớ rằng code thường là kết quả của nhiều ràng buộc về thời gian, yêu cầu thay đổi và lịch sử. Hãy tìm hiểu bối cảnh trước khi phán xét, và nếu thực sự cần cải thiện, hãy làm bằng refactor nhỏ có test.

Kết luận

Đọc codebase lớn là kỹ năng luyện được: hiểu bức tranh lớn, chạy được dự án, lần theo từng luồng, tận dụng test và lịch sử Git, rồi bắt tay sửa thật. Mỗi dự án bạn đọc sẽ làm dự án tiếp theo dễ hơn.

Để có nền tảng vững khi đọc code người khác, bạn có thể bắt đầu từ các khóa học cơ bản đến nâng cao tại codebem.com.

author_photo
Nguyễn Đình Cường

0 comment