Kod ölçümleri - Devralma derinliği (DIT)
Bu makalede, nesne odaklı analiz için özel olarak tasarlanmış ölçümlerden biri hakkında bilgi ediniyorsunuz: Devralma Derinliği. Devralma ağacı derinliği (DIT) olarak da adlandırılan devralma derinliği, "düğümden ağacın köküne kadar olan uzunluk üst sınırı" CK olarak tanımlanır. Bunu basit bir örnekle görebilirsiniz. Yeni bir Sınıf Kitaplığı projesi oluşturun ve herhangi bir kod yazmadan önce Çözüm için Kod Ölçümlerini Hesapla'yı > seçerek kod ölçümlerini hesaplayın.
Tüm sınıflar öğesinden System.Object
devraldığından derinlik şu anda 1'dir. Bu sınıftan devralır ve yeni sınıfı incelerseniz, sonucu görebilirsiniz:
Ağaçtaki düğüm ne kadar düşük olursa (Class2
bu örnekte) devralma derinliğinin o kadar yüksek olduğuna dikkat edin. Alt öğeler oluşturmaya devam edebilir ve derinliğin istediğiniz kadar artmasına neden olabilirsiniz.
Varsayımlar
Devralma derinliği üç temel varsayıma dayalıdır CK:
Hiyerarşideki bir sınıf ne kadar derin olursa, büyük olasılıkla devralacağı yöntem sayısı o kadar fazla olur ve bu da davranışını tahmin etme işlemini zorlaştırır.
Daha fazla sınıf ve yöntem söz konusu olduğundan daha derin ağaçlar daha fazla tasarım karmaşıklığı içerir.
Ağaçtaki daha derin sınıfların devralınan yöntemleri yeniden kullanma olasılığı daha yüksektir.
1 ve 2 varsayımları, derinlik için daha yüksek bir sayıya sahip olmanın kötü olduğunu gösterir. Eğer orada bittiyse, iyi durumda olurdun; ancak 3 numaralı varsayım, derinlik için daha yüksek bir sayının olası kod yeniden kullanımı için iyi olduğunu gösterir.
Analiz
Derinlik ölçümünü şu şekilde okuyabilirsiniz:
Derinlik için düşük sayı
Derinlik için düşük bir sayı, daha az karmaşıklık anlamına gelir, ancak devralma yoluyla daha az kod yeniden kullanılması olasılığını da ifade eder.
Derinlik için yüksek sayı
Derinlik için yüksek sayı, devralma yoluyla kodun yeniden kullanılması için daha fazla potansiyel anlamına gelir, ancak kodda hata olasılığı daha yüksek olan daha karmaşıktır.
Kod Çözümleme
Kod analizi, Bakım kuralları kategorisini içerir. Daha fazla bilgi için bkz . Bakım kuralları. Eski kod analizi kullanılırken Genişletilmiş Tasarım Kılavuzu kural kümesi bir bakım alanı içerir:
Bakım alanının içinde devralma kuralı vardır:
Bu kural, devralma derinliği 6 veya daha büyük olduğunda bir uyarı bildirir, bu nedenle aşırı devralmayı önlemeye yardımcı olmak için iyi bir kuraldır. Kural hakkında daha fazla bilgi edinmek için bkz . CA1501.
Hepsini bir araya getirmek
DIT için yüksek değerler, hata olasılığının da yüksek olduğu, düşük değerlerin hata olasılığını azalttığı anlamına gelir. DIT için yüksek değerler devralma yoluyla kodu yeniden kullanma potansiyelinin daha yüksek olduğunu gösterir, düşük değerler ise devralma için daha az kod yeniden kullanılmasını önerir. Yeterli veri olmaması nedeniyle şu anda DIT değerleri için kabul edilen bir standart yoktur. Yakın zamanda yapılan çalışmalar bile bu metrik Shatnawi için standart sayı olarak kullanılabilecek uygun bir sayıyı belirlemek için yeterli veri bulamadı. Bunu destekleyecek ampirik kanıt olmasa da, çeşitli kaynaklar 5 veya 6 civarında bir DIT'nin üst sınır olması gerektiğini öne sürmektedir. Örnek için bkz. https://www.devx.com/architecture-zone/45611/
.
Alıntı
CK
^ Chidamber, S. R. & Kemerer, C. F. (1994). Nesne Odaklı Tasarım için Ölçüm Paketi (Yazılım Mühendisliğinde IEEE İşlemleri, Cilt 20, No. 6). Pittsburgh Üniversitesi web sitesinden 14 Mayıs 2011'de alındı: http://www.pitt.edu/~ckemerer/CK%20research%20papers/MetricForOOD_ChidamberKemerer94.pdf
Krishnan dili
Subramanyam, R. & Krishnan, M. S. (2003). Nesne Odaklı Tasarım Karmaşıklığı için CK Ölçümlerinin Ampirik Analizi: Yazılım Hatalarının Etkileri (Yazılım Mühendisliğinde IEEE İşlemleri, Cilt 29, No. 4). 14 Mayıs 2011'de alındı, başlangıçta Massachusetts Üniversitesi Dartmouth web sitesinden edinildi https://ieeexplore.ieee.org/abstract/document/1191795
Shatnawi
^ Shatnawi, R. (2010). Açık Kaynak Sistemlerde Nesne Odaklı Ölçümlerin Kabul Edilebilir Risk Düzeylerinin Nicel Araştırması (Yazılım Mühendisliğinde IEEE İşlemleri, Cilt 36, No. 2).
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin