Định nghĩa về Separation of concerns
Như phần title em muốn hỏi định nghĩa về Separation of concerns. Áp dụng trong thực tế như thế nào trong ngành phần mềm ạ. Em đọc tài liệu họ không lấy ví dụ lên khó hiểu quá. Mong các anh giải đáp giúp em với ạ
1 CÂU TRẢ LỜI
Separation of Concerns em có thể hiểu là phân tách phụ thuộc hay chia tách quan hệ, đại loại như vậy
Tư tưởng của Separation of Concerns là phân tách hệ thống ra thành các thành phần, chức năng nhỏ hơn, sao cho chúng càng ít điểm chung (về mặt chức năng), hay càng ít phụ thuộc vào nhau càng tốt. Khi các thành phần được ghép nối vào trong hệ thống, chúng sẽ tương tác với nhau thông qua thông tin về Interface, hay các open API, mà không cần phải biết các thành phần kia được xây dựng như thế nào, bên trong đó được lập trình (implement) ra sao.
Các lợi ích mà Separation of Concerns đem lại thì có rất nhiều, có thể kể ra một vài cái như:
- Do chia nhỏ thành các thành phần, tính năng, nên code có thể dễ đọc, dễ maintain hơn
- Quá trình phát triển nhanh hơn, do các thành phần, tính năng có thể phát triển độc lập với nhau, bởi các team khác nhau
- Các thành phần có thể được update, modify một cách độc với nhau
- Các thành phần có thể sử dụng lại
- Có thể sử dụng các thành phần do bên khác phát triển, mà không cần phải chỉnh sửa, cũng như không cần hiểu rõ chi tiết bên trong nó như thế nào
- ...
Separation of Concerns là một design principle (nguyên lý thiết kế) phổ biến trong phát triển phẩn mềm, với rất nhiều các thể hiện, có thể rất quen thuộc với các lập trình viên, nhưng họ lại không hay để ý đến, ví dụ một vài cái đơn giản như:
- HTML/CSS/Javascript với các ngôn ngữ đóng những vai trò khác nhau
- Mô hình MVC, với các tầng Model, View, Controller đảm nhiệm các nhiệm vụ riêng biệt khác nhau
- Kiến trúc Microservices với các service thực hiện những nhiệm vụ khác nhau
- Ở tầng thấp hơn, như trong lập trình hướng đối tượng, Separation of Concerns được thể hiện qua một design principle khác là Single Responsibility (Nguyên lý đơn trách nhiệm)
- ...
Em cảm ơn anh ạ, câu trả lời rất dễ hiều