Cyclomatic Complexity
Bir programın karmaşıklığını gösteren bir yazılım metriği.
McCabe, 1976
Tanım
Cyclomatic complexity = Karar noktası sayısı + 1
Bir programın karmaşıklığını gösteren bir yazılım metriği.
Bir metottaki kararların (dalların) ve bunlara bağlı olası yolların sayısı.
Her
if
,switch
bloğu 1 sayılır. Toplam sayı ne kadar fazla olursa, kodun karmaşıklığı açısından o kadar kötüdür.Bakım yapılabilirlik endeksini (Maintainability Index) ölçmek açısından yararlı bir metriktir.
Sorun
Bir metotta ne kadar fazla dal varsa, işlevin zihinsel modelini oluşturmak o kadar zor olur. (İnsan aklı belli bir anda belirli sayıda konuya odaklanabilir → 7 +- 2)
Bir metodun testlerinde kapsamı tamamlamak zorlaşır ve daha uzun sürer.
Hata oluşma (mantıksal kurguda) olasılığı artar.
Yarar
Bir metodun kaç tane birim testi ile %100 kapsama sağlanarak test edilebileceğini gösterir.
Tespit Etmek
Indent şelalerine dikkat! Bir metodun gövdesine göz gezdirildiğinde, içeri doğru giden birçok kod bloğu görünüyorsa metodun ne yaptığına bakmadan da karmaşıklık sorunu olduğu anlaşılabilir.
Bazen metotlardaki indent sayısını arttıran koşullu ifadeler doğrudan görünmeyebilir, ancak masum gibi görünen ancak sinsi private metot çağrılarıyla uzayıp giden bir akışın da yüksek karmaşıklığa sahip olduğu tespit edilebilir.
Statik kod analiz araçlarıyla uygulamayı oluşturan bileşenlerin Cyclomatic Complexity sayısı ölçülebilir.
Düşük CC
Kod kalitesini arttırır. → Okunabilirlik (Readability) → Bakım yapılabilirlik (Maintainability) → Taşınabilirlik (Portability)
Yüksek CC
→ Az cohesion (uyumluluk) olduğunu gösterir. (S.R.P ihlali)
Last updated
Was this helpful?