Cohesion là gì?

Noun AI

Nếu bạn muốn tạo các nhóm đồ vật, có lẽ bạn sẽ nghĩ đến hai điều: cohesion và separation. Thật khó để nói điều gì tạo nên một tập hợp nhóm tốt, nhưng cohesion và separation có thể giúp chúng ta tìm ra điều đó. Trong bài viết này chúng ta chỉ tìm hiểu cohesion.

Hãy tưởng tượng bạn đang xem một trận bóng đá. Chỗ ngồi của bạn khác xa so với người chơi thực tế, nhưng bạn vẫn có cái nhìn tốt về trận đấu. Chúng ta dựa trên cohesion và separation để theo dõi các cầu thủ. Cohesion có nghĩa là các thành viên (member) của một nhóm tương tự nhau. Một đội bóng có đồng phục là cohesion sẽ trông giống nhau trên sân giúp bạn dễ dàng phân biệt được ai ở đội nào.

Hãy tưởng tượng một trò chơi mà người chơi mặc bất cứ thứ gì họ muốn. Hầu hết thời gian sẽ rất khó để biết ai đang ở trong đội nào. Những bộ đồng phục đó sẽ KHÔNG cohesion. Đồng đội sẽ không giống nhau. Nếu đồng phục là cohesion nghĩa là chúng có cùng màu và phần lớn trông giống nhau - ngay cả khi người chơi có một số lựa chọn về áo lót.

Noun None
Độ gắn kết

Khi đề cập đến lĩnh vực thiết kế phần mềm (software design) đến đo lường phần mềm (software metric), độ gắn kết (cohesion) là mức độ mà các phần tử (element) bên trong một mô-đun (module) thuộc về nhau. Một mô-đun có thể là một lớp (class) hoặc một package hoặc thậm chí là một microservice. Nói một cách đơn giản, nó có nghĩa là "mã thay đổi cùng nhau, luôn ở cùng nhau".

Một mô-đun có độ gắn kết (cohesion) cao chứa các phần tử có liên quan chặt chẽ với nhau và thống nhất trong mục đích của chúng. Ví dụ: tất cả các phương thức (method) trong lớp User phải đại diện cho hành vi của người dùng.

Một mô-đun được cho là có độ gắn kết (cohesion) thấp nếu nó chứa các phần tử không liên quan. Ví dụ một lớp User chứa một phương thức về cách xác thực (validate) địa chỉ email. Lớp User có thể chịu trách nhiệm lưu trữ địa chỉ email của người dùng nhưng không phải để xác thực nó hoặc gửi email. Điều đó nên thuộc về một số lớp khác như Email.

Như bạn có thể thấy, khái niệm về độ gắn kết (cohesion) có liên quan chặt chẽ đến single responsibility principle (một trong những nguyên tắc SOLID) quy định rằng một lớp chỉ nên có một trách nhiệm. Mô-đun tuần theo single responsibility principle có độ gắn kết (cohesion) cao.

Learning English Everyday