Có số liệu cho sự gắn kết và khớp nối?


34

Có một số liệu nào tương tự như thước đo Độ phức tạp McCabe để đo mức độ gắn kết của một thói quen và cũng như mức độ lỏng lẻo (hoặc chặt chẽ) của thói quen được kết hợp với mã khác trong cùng một mã cơ sở không?


Câu trả lời:


29

Tôi nghĩ rằng số liệu bạn đang tìm kiếm là LCOM4, ​​mặc dù nó áp dụng nhiều hơn cho các lớp.

Sonar giải thích nó độc đáo ở đây :

... số liệu: LCOM4 (Phương pháp thiếu liên kết) để đo lường mức độ gắn kết của các lớp. Giải thích số liệu này khá đơn giản vì giá trị 1 có nghĩa là một lớp chỉ có một trách nhiệm (tốt) và giá trị X có nghĩa là một lớp có thể có trách nhiệm X (xấu) và nên được tái cấu trúc / phân tách.

Không có phép thuật nào ở đây, chỉ có lẽ thường. Hãy lấy một ví dụ đơn giản với Trình điều khiển lớp. Lớp này có hai trường: Xe và Não và năm phương thức: drive (), goTo (), stop (), getAngry () và drinkCoffee (). Dưới đây là biểu đồ phụ thuộc giữa các thành phần. Có ba khối thành phần liên quan, vì vậy LCOM4 = 3, do đó, lớp dường như có ba trách nhiệm khác nhau và phá vỡ Nguyên tắc Trách nhiệm duy nhất. http://i.stack.imgur.com/2527G.png

...

Đó là một công cụ tuyệt vời, nếu bạn có thể sử dụng nó. :)


@OnorioCatenacci Không có vấn đề. :)
Oleksi

Thật tệ là họ không đi sâu vào cách họ tính toán số liệu.
Onorio Catenacci

3
Điều này có thể giúp với điều đó: aivosto.com/project/help/pm-oo-cohesion.html
Oleksi

Vì tò mò, làm thế nào bạn sẽ cấu trúc lại sơ đồ đó để tuân theo Nguyên tắc Trách nhiệm duy nhất? brain.setAngry(driver)? car.applyBreaks(driver)?
Phil

Tôi nghi ngờ rằng các số liệu gắn kết mã dựa thực sự có thể là dấu hiệu của cấp độ giao diện gắn kết, và thậm chí có thể thúc đẩy các chương trình xấu: mortoray.com/2015/04/29/...
EDA-qa mort-ora-y

16
  • Khớp nối liên kết: Số trách nhiệm
  • Khớp nối Efferent: Số lượng phụ thuộc
  • Tính không ổn định: Tỷ lệ khớp nối hiệu quả so với tổng khớp nối (Afferent + Efferent).

Sự không ổn định được hỗ trợ trong các công cụ số liệu mã khác nhau.


Cảm ơn @ Brian - chính xác là thứ mà tôi đã hy vọng tìm thấy.
Onorio Catenacci
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.