Uyum ve Birleşme İçin Metrik Var mı?


Yanıtlar:


29

Bence aradığınız metrik, LCOM4'tür, ancak sınıflara daha çok uygulanır.

Sonar burada güzel anlatıyor :

... metric: LCOM4 (Yapışma Yöntemlerinin Yokluğu), yapışkanlık sınıflarının nasıl olduğunu ölçmek için. Bu metriği yorumlamak oldukça basittir çünkü değer 1, bir sınıfın yalnızca bir sorumluluğu olduğu (iyi) ve X değeri, bir sınıfın muhtemelen X sorumlulukları olduğu (kötü) olduğu ve yeniden yapılandırılması / bölünmesi gerektiği anlamına gelir.

Burada sihir yok, sadece sağduyulu. Sınıf Sürücüsü ile basit bir örnek alalım. Bu sınıfın iki alanı vardır: Araba ve Beyin ve beş yöntem: drive (), goTo (), stop (), getAngry () ve drinkCoffee (). İşte bu bileşenler arasındaki bağımlılık grafiği. Üç ilgili bileşen bloğu vardır, bu nedenle LCOM4 = 3, bu yüzden sınıfın üç farklı sorumluluğu var gibi görünüyor ve Tek Sorumluluk İlkesini ihlal ediyor. http://i.stack.imgur.com/2527G.png

...

Kullanabiliyorsan, harika bir araçtır. :)


@OnorioCatenacci Sorun yok. :)
Oleksi

Çok kötü, metriği nasıl hesapladıklarına girmiyorlar.
Onorio Catenacci

3
Bu konuda yardımcı olabilir: aivosto.com/project/help/pm-oo-cohesion.html
Oleksi

Meraktan, bu sorumluluğu Tek Sorumluluk İlkesine uymak için nasıl yeniden düzenlersiniz? brain.setAngry(driver)? car.applyBreaks(driver)?
Phil

Kod tabanlı uyum ölçümlerinin gerçekten arabirim düzeyinde uyum gösterdiğinin göstergesi olabileceğinden ve hatta kötü programlamanın teşvik edildiğinden
şüpheliyim

16
  • Afferent kavrama: Sorumlulukların sayısı
  • Efferent kupling: Bağımlılık sayısı
  • Kararsızlık: Efferent kuplajın toplam kuplaj oranı (Afferent + Efferent).

Kararsızlık, çeşitli kod metrik araçlarında desteklenir.


Thanks @ Brian - tam olarak bulmayı umduğum şeydi.
Onorio Catenacci
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.