# Best Practices & Anti-Patterns

> Best Practices & Anti-Patterns - Khóa học Mobile Action Pro

- URL: https://dantech.academy/courses/kotlin-accelerator/engineer-builder/06-clean-architecture/lesson-12-best-practices
- Khóa học: [Mobile Action Pro](https://dantech.academy/courses/kotlin-accelerator.md)
- Module: Clean Architecture Chuyên Sâu
- Thời lượng: 25 phút
- Độ khó: intermediate
- Truy cập: Dành cho học viên
- English: https://dantech.academy/en/courses/kotlin-accelerator/engineer-builder/06-clean-architecture/lesson-12-best-practices.md

## Mục tiêu

- Kiểm chứng :domain thuần bằng file build và git grep
- Dùng empty(), require và phân loại lỗi một lần ở ranh giới
- Nhận ra khi nào không nên thêm lớp, và đánh giá đánh đổi như câu lỗi trong domain

## Nội dung bài học

1. Mục Tiêu Bài Học
2. Phần 1: Domain Thuần Thật Sự, Và Kiểm Chứng Được
3. Phần 2: Model Không Null Với empty()
4. Phần 3: Invariant Bằng require()
5. Phần 4: Phân Loại Lỗi Một Lần, Ở Ranh Giới
6. Phần 5: Composition Root Tường Minh
7. Phần 6: Đừng Thêm Lớp Khi Không Cần
8. Bài Tập Thực Hành
9. Lộ Trình Đọc Code
10. Dấu Hiệu Cần Tránh
11. Tham Khảo
12. Ý Chính

## Học cùng AI agent

Toàn bộ bài học dành cho học viên của khóa. Học viên mở bài trên web và bấm nút **Markdown** để copy toàn bài, rồi dán vào Claude, ChatGPT, Cursor hoặc agent bạn đang dùng. Nhanh hơn: tạo token ở `/profile/ai-agents` và agent đọc bài trực tiếp qua MCP.

- [Đăng ký khóa học](https://dantech.academy/kotlin-accelerator/checkout)

---

- Bài trước: [Mapping Giữa Các Layers](https://dantech.academy/courses/kotlin-accelerator/engineer-builder/06-clean-architecture/lesson-11-mapping-layers.md)
- Bài tiếp theo: [DI Và Inversion of Control](https://dantech.academy/courses/kotlin-accelerator/engineer-builder/07-dependency-injection/lesson-01-di-basics.md)
