Separation of Concerns
Separation of Concerns (Tách bạch mối quan tâm) là nguyên tắc nền tảng chạy xuyên suốt cả cuốn sách: mỗi phần code chỉ nên lo một khía cạnh (concern) riêng biệt, không trộn lẫn nhiều mối quan tâm vào cùng một chỗ.
🎯 Biểu hiện ở nhiều cấp độ
Đây là sợi chỉ đỏ kết nối mọi kỹ thuật trong sách:
- Cấp code: tách Core Code là gì (nghiệp vụ) khỏi Infrastructure Code là gì (kết nối ngoài). Trộn lẫn hai thứ này chính là vi phạm SoC → xem Vấn đề khi Core và Infrastructure trộn lẫn.
- Cấp đối tượng: Read Model/View Model (đọc) tách khỏi write model (ghi).
- Cấp use case: Application Service tách logic use case khỏi Controller (HTTP).
- Cấp kiến trúc: Layered Architecture - Kiến trúc Phân lớp chia Domain / Application / Infrastructure, mỗi tầng một trách nhiệm.
- Cấp tích hợp: Hexagonal Architecture - Ports and Adapters tách rõ từng loại kết nối ngoài thành port + adapter riêng.
💡 Vì sao quan trọng
Khi mỗi phần có một trách nhiệm rõ ràng:
- Dễ đọc, dễ hiểu (biết chỗ nào lo việc gì).
- Dễ thay đổi (sửa một concern không đụng concern khác).
- Dễ kiểm thử (test từng phần độc lập).
Ở cấp class, nguyên tắc này chính là Single Responsibility Principle trong SOLID. SoC là phiên bản tổng quát hơn, áp dụng từ dòng code tới toàn kiến trúc.