Share via


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.

Devralma derinliği örneği 1

Tüm sınıflar öğesinden System.Objectdevraldığından derinlik şu anda 1'dir. Bu sınıftan devralır ve yeni sınıfı incelerseniz, sonucu görebilirsiniz:

Devralma derinliği örneği 2

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:

  1. 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.

  2. 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.

  3. 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:

Devralma tasarımı yönergeleri kural kümelerinin derinliği

Bakım alanının içinde devralma kuralı vardır:

Devralma bakımı kuralı derinliği

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).