Viết code sạch, dễ đọc, dễ bảo trì bằng TypeScript để qua được vòng review khó tính: đặt tên rõ ý định, hàm nhỏ làm một việc, object vs data structure, xử lý lỗi & ranh giới (boundaries), unit test sạch, nhận diện code smell và refactor an toàn - lấy cảm hứng từ sách Clean Code.
12 bài ~248 phút Đã xuất bản
Học xong mèo con làm được gì?
- Viết code mà người khác - và chính mèo con của 6 tháng sau - đọc hiểu ngay.
- Đặt tên, chia hàm và xử lý lỗi theo chuẩn mà các đội chuyên nghiệp dùng.
- Nhận diện "code smell" và refactor an toàn mà không làm vỡ chức năng đang chạy.
- Qua được vòng review code khó tính ở công ty.
Lộ trình học
- 1 Vì sao code sạch quan trọng Code đọc nhiều hơn viết; “sự bừa bộn” (mess) làm chậm cả đội; định nghĩa code sạch & quy tắc Boy Scout. Vì sao dùng TypeScript: kiểu giúp diễn đạt ý định. Cơ bản · 16′
- 2 Đặt tên có ý nghĩa Đặt tên rõ ý định (intention-revealing), phát âm & tìm được (searchable); tránh viết tắt/tên gây nhiễu & mã hoá kiểu vào tên; một khái niệm một từ. Cơ bản · 20′
- 3 Hàm nhỏ, làm một việc Hàm nhỏ làm MỘT việc ở một mức trừu tượng; ít tham số (tránh 3+ & cờ boolean); tránh tác dụng phụ ẩn; command-query separation; thay if/switch lặp bằng đa hình. Vận dụng · 22′
- 4 Bình luận: khi nào cần Bình luận tốt giải thích “vì sao” chứ không “cái gì”; để code tự giải thích bằng tên & hàm; bỏ comment thừa/lỗi thời/bị comment-out; khi nào JSDoc chính đáng. Vận dụng · 16′
- 5 Định dạng & cấu trúc Định dạng dọc (vertical): khái niệm liên quan đứng gần, hàm gọi gần nhau; mật độ & khoảng trống; độ dài dòng; để máy lo bằng Prettier + ESLint + EditorConfig. Cơ bản · 16′
- 6 Object vs Data Structure Bất đối xứng object/data: object giấu dữ liệu lộ hành vi, data structure thì ngược lại; tránh hybrid; Luật Demeter (Law of Demeter) tránh "train wreck". Vận dụng · 20′
- 7 Xử lý lỗi sạch Dùng exception thay mã lỗi/null; viết try-catch trước, thông điệp có ngữ cảnh; đừng trả/nhận null (kiểu hẹp, “?”); bọc lỗi bên thứ ba; đừng nuốt lỗi. Vận dụng · 20′
- 8 Ranh giới (Boundaries) Ranh giới (boundaries) với code bên thứ ba: bọc API ngoài sau interface (adapter); "learning test" để dò thư viện lạ; đừng để kiểu thư viện rò khắp dự án. Nâng cao · 20′
- 9 Unit test sạch Test cũng phải sạch: quy tắc F.I.R.S.T; một khái niệm mỗi test; mẫu AAA (Arrange-Act-Assert); tên test kể chuyện; test đỡ lưng cho refactor; ba luật TDD. Vận dụng · 22′
- 10 Code smell & refactoring Nhận diện mã mùi (code smell): trùng lặp, hàm dài, tham số thừa, magic number, dead code; và refactoring an toàn TỪNG BƯỚC với test đỡ lưng. Nâng cao · 24′
- 11 Thiết kế đơn giản (Emergence) Bốn quy tắc thiết kế đơn giản (Kent Beck): chạy hết test → không trùng lặp → diễn đạt rõ ý định → tối thiểu phần tử; thiết kế "nổi lên" qua refactor. Nâng cao · 20′
- 12 Dự án: refactor code “bẩn” Dự án cuối khoá: 3 thử thách refactor bằng TypeScript - hàm rối, God object, code smell - biến "bẩn" thành sạch từng bước nhờ characterization test. Nâng cao · 32′
Sắp bắt tay vào dự án thật?
Tên miền, VPS, hosting để đưa sản phẩm lên mạng - chọn ở trang Ưu đãi. Mua qua link là góp thêm “cá” nuôi Mèo, bạn không tốn thêm.