Khớp nối vs Sự kết dính
Khớp nối và liên kết là hai khái niệm được tìm thấy trong Java (và tất cả các ngôn ngữ hướng đối tượng khác). Khớp nối đo lường mức độ phụ thuộc của mỗi mô-đun chương trình vào các mô-đun chương trình khác. Sự liên kết đo lường mức độ liên quan của từng chức năng trong một mô-đun. Trên thực tế, bất kỳ ngôn ngữ hướng đối tượng nào (bao gồm cả Java) đều có hai mục tiêu chính là tăng tính gắn kết và giảm sự kết hợp cùng một lúc để phát triển các chương trình hiệu quả nhất. Hai thước đo kỹ thuật phần mềm này được phát triển bởi Larry Constantine để giảm chi phí sửa đổi và bảo trì phần mềm.
Cohesion là gì?
Cohesion đo lường mức độ liên quan của từng chức năng trong một mô-đun chương trình. Các lớp học có cấu trúc tốt dẫn đến các chương trình có tính gắn kết cao. Nếu một lớp nào đó đang thực hiện một tập hợp các chức năng có liên quan cao, thì lớp đó được cho là gắn kết. Mặt khác, nếu một lớp đang thực hiện một loạt các chức năng hoàn toàn không liên quan thì có nghĩa là lớp đó hoàn toàn không gắn kết. Điều quan trọng cần hiểu là không có tính liên kết không có nghĩa là ứng dụng tổng thể không có chức năng cần thiết. Chỉ là nếu không có sự gắn kết, sẽ rất khó để quản lý các chức năng vì chúng sẽ bị phân tán ở nhiều vị trí sai khi mức độ phức tạp của ứng dụng tăng lên theo thời gian. Việc duy trì, sửa đổi và mở rộng các hành vi rải rác trên toàn bộ mã là rất tẻ nhạt ngay cả đối với những lập trình viên có kinh nghiệm nhất.
Khớp nối là gì?
Khớp nối đo lường mức độ phụ thuộc của mỗi mô-đun chương trình vào các mô-đun chương trình khác. Tương tác giữa hai đối tượng xảy ra bởi vì có sự ghép nối. Các chương trình kết hợp lỏng lẻo có tính linh hoạt và khả năng mở rộng cao. Kết hợp chặt chẽ không bao giờ là tốt bởi vì một đối tượng có thể bị phụ thuộc nhiều vào một số đối tượng khác. Đây là một cơn ác mộng khi mã được sửa đổi, bởi vì sự khớp nối cao có nghĩa là các lập trình viên cần phải làm việc trên nhiều vị trí của mã cho dù chỉ một sửa đổi hành vi. Việc ghép nối mạnh luôn dẫn đến các chương trình có tính linh hoạt thấp và khả năng mở rộng / mở rộng kém hơn. Tuy nhiên, trong các ngôn ngữ lập trình như Java, việc tránh hoàn toàn việc ghép nối là không thể. Nhưng các lập trình viên nên cố gắng hết sức để giảm khớp nối càng nhiều càng tốt. Cũng có thể có một số khớp nối để giúp các đối tượng tương tác với nhau mà không cản trở khả năng mở rộng và tính linh hoạt của nó.
Sự khác biệt giữa Khớp nối và Liên kết là gì?
Mặc dù sự liên kết và sự liên kết liên quan đến chất lượng của một mô-đun trong kỹ thuật phần mềm, chúng là những khái niệm hoàn toàn khác nhau. Cohesion nói về mức độ liên quan của chức năng với nhau trong mô-đun, trong khi kết hợp đề cập đến mức độ mà một mô-đun phụ thuộc vào các mô-đun chương trình khác trong toàn bộ ứng dụng. Để có phần mềm chất lượng tốt nhất, sự gắn kết và sự ghép nối phải đạt đến hai đầu đối diện của phổ của chúng. Nói cách khác, khớp nối lỏng lẻo và liên kết chặt chẽ cung cấp phần mềm tốt nhất. Việc có các trường riêng tư, các lớp không công khai và các phương thức riêng cung cấp khả năng kết hợp lỏng lẻo, đồng thời hiển thị tất cả các thành viên trong lớp và có gói làm mức hiển thị mặc định mang lại sự gắn kết cao.