Kwadrant Feathers’a, czyli gdzie refaktoryzować?

Parę ładnych lat temu przygotowałem wpis na temat Złożoności Cyklomatycznej McCabe’a. Pod koniec artykułu wspomniałem o narzędziu, które opiera się o tą metrykę i które pozwala nam określić w które rejony kodu powinniśmy celować planując refaktoryzację. Narzędziem tym jest tzw. Kwadrant Feathers’a. W poprzednim artykule odgrażałem się, że o kwadrancie jeszcze wspomnę, ale jakoś nie było okazji. Aż do niedawna, gdy jeden z czytelników wprost zapytał pod tamtym wpisem, kiedy napiszę coś na ten temat. No to właśnie nadszedł ten moment.

Continue reading “Kwadrant Feathers’a, czyli gdzie refaktoryzować?”

Metryka LCOM4

Zasady SOLID  to zbiór pomocnych wskazówek dotyczących  projektowania klas zgodnych z kanonami Object Oriented. Pierwsza z nich (Single Responsibility Principle), mówi nam o tym, że każda klasa powinna mieć jedną, jasno zdefiniowaną odpowiedzialność.

Istnieje metryka, która powstała z zamysłem umożliwienia automatycznej oceny klas pod kątem ich spójności (co w pewnym sensie można utożsamiać z SRP). Nazwya się Lack of Cohesion in Methods. Zaprojektowanie jej nie było jednak łatwe – ewoluowała ona przez lata. Dziś skupię się na jej wersji znanej jako LCOM4, która to jest wykorzystywana w narzędziu Sonar. Continue reading “Metryka LCOM4”

Sonar Driven Development

Chyba każdy programista ma jakąś opinię na temat jakości oprogramowania. Tematyka ta jest bardzo złożona, gdyż jakość można oceniać z wielu różnych perspektyw:

  • Czy kod działa tak jak trzeba?
  • Czy jest dostatecznie czytelny?
  • Czy jest pokryty testami jednostkowymi?
  • Czy został poprawnie zaprojektowany?

Są to bardzo ogólne kryteria a przecież istnieje ich więcej. Z tego właśnie powodu bardzo ciężko jest arbitralnie określić, czym konkretnie powinien charakteryzować się wysokiej jakości kod. Jednym z podejść może być odrzucenie subiektywnych “odczuć”, na rzecz pomiarów odpowiednimi metrykami. Czy jednak takie podejście jest słuszne? Continue reading “Sonar Driven Development”