Czy istnieje metryka analogiczna do miary złożoności McCabe, która służy do pomiaru spójności procedury i jej luźnego (lub ścisłego) połączenia z innym kodem w tej samej bazie kodu?
Czy istnieje metryka analogiczna do miary złożoności McCabe, która służy do pomiaru spójności procedury i jej luźnego (lub ścisłego) połączenia z innym kodem w tej samej bazie kodu?
Odpowiedzi:
Myślę, że metryka, której szukasz, to LCOM4, chociaż dotyczy ona w większym stopniu klas.
Sonar ładnie wyjaśnia to tutaj :
... metryka: LCOM4 (brak metod kohezji) do pomiaru stopnia spójności klas. Interpretacja tej miary jest dość prosta, ponieważ wartość 1 oznacza, że klasa ma tylko jedną odpowiedzialność (dobrą), a wartość X oznacza, że klasa ma prawdopodobnie X obowiązków (złej) i powinna zostać zrefaktoryzowana / podzielona.
Nie ma tu żadnej magii, tylko zdrowy rozsądek. Weźmy prosty przykład ze sterownikiem klasy. Ta klasa ma dwa pola: Car i Brain oraz pięć metod: drive (), goTo (), stop (), getAngry () i drinkCoffee (). Oto wykres zależności między tymi komponentami. Istnieją trzy bloki powiązanych ze sobą komponentów, więc LCOM4 = 3, więc klasa wydaje się mieć trzy różne obowiązki i łamie zasadę pojedynczej odpowiedzialności.
...
To świetne narzędzie, jeśli możesz go użyć. :)
brain.setAngry(driver)
? car.applyBreaks(driver)
?
Niestabilność jest obsługiwana w różnych narzędziach do pomiaru kodu.