- Cohesion (độ gắn kết): mức độ các phần bên trong một module cùng phục vụ một mục đích rõ ràng. High cohesion = mọi hàm/thuộc tính trong module liên quan chặt tới một trách nhiệm (gần với SRP).
- Coupling (độ phụ thuộc): mức độ một module lệ thuộc vào chi tiết của module khác. Low coupling = các module giao tiếp qua interface ổn định, ít biết nội bộ của nhau.
Vì sao high cohesion + low coupling:
- Dễ hiểu: mỗi module có một lý do tồn tại rõ ràng.
- Dễ sửa/thay: đổi một module ít lan sang module khác (giảm ripple effect).
- Dễ test & tái sử dụng: module tự chứa, mock dependency đơn giản.
Hình dung: high cohesion là các thứ liên quan nằm gần nhau; low coupling là các nhóm đó nối với nhau bằng "dây mảnh", không dính chặt. Đây là thước đo cốt lõi của thiết kế module tốt (Constantine/Yourdon, được nhắc lại trong Clean Architecture).