Tag Archives: Code Metrics

Code Metrics : Cyclomatic Complexity

Kompleks kod hata oranı fazla, anlaşılması zor, değiştirmesi zor, test etmesi zor kısacası ençok problem içeren kod olduğu için bunu ölçebilmek ve buna göre önlem almak oldukça önemli. Kodun kalitesini ölçmekte kullanılan birçok metrik(ölçüm) bulunuyor. Bunların kodun kompleksliğini değerini ortaya çıkaran en önemli metriklerden biride Cyclomatic Complexity.  Kim, ne zaman, nasıl, kaç tarihinde bulmuş onları linkteki wiki sayfasından öğrenebilirsiniz.

Metriklerın yaptığı iş kodun belirli kriterlere göre değerlendirmesini yapıp size bazı değerler hakkında fikir vermesi. Mesela geliştirdiğiniz projede kaç satır kod,kaç satır yorum satırı var,sınıflarınız ortalama kaç metod,kaç değişken içeriyor,sınıfların birbirlerine bağımlılıkları nedir… gibi birçok metrik aslında kodunuzu çeşitli konulardaki değerlerini izlemenizi sağlıyor.

Bu bakımdan kodun kalitesini bu çeşit ölçümler ile izleyip, problemli alanları ortaya çıkarıp ardından bunlara göre önlem almak oldukça faydalı oluyor. Hatta bu tarz metrikleri eğer düzgün bir sürüm otomasyon sisteminiz varsa sürüm çıkarma işlemine bile ekleyebiliyorsunuz. Mesela 1000 satır ve daha fazla kod içeren sınıf varsa bu sürümü çıkarma gibi. (Biraz saçma oldu ama idare edin :) ). Şimdi metriklerin neden önemli olduğu konusunda anlaştık sanırım. Anlaşmadıysakta örnekten sonra anlaşacağımızı umuyorum :)

Cyclomatic complexity metriği nedir onu açıklayalım : Cyclomatic complexity kodun ne kadar kompleks olduğu hakkında fikir veren en önemli ölçümlerden biridir. Bunu yapmak için kodun içerisindeki if,else, while, switch,for gibi yapıların sayısını kullanır.Bu değerin projemize nasıl yansıyacağını aşağıdaki tablodan yorumlayabilirsiniz.Bir metodun Cyclomatic complexity değerine göre taşıdığı risk aşağıdaki tabloda bulunuyor.

Cyclomatic Complexity Risk
1 – 10 Basit ,risk az
11 – 20 daha komplex,orta derece riskli
21 – 50 kompleks,yüksek derece riskli
> 50 test edilemeyen,çok yüksek riskli( silin daha iyi :) )

Matematiği sevenler için Wikipedia formülleri oldukça güzel anlatmış. Eğer formüllerle fazla uğraşmak istemiyorsanız Cyclomatic complexity daha basit olarak şu şekilde hesaplanıyor. Mesela aşağıdaki gibi bir metodumuz var diyelim.

Devamını Burdan Okuyabilirsiniz