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.