Erişilmez kod - Vikipedi
İçeriğe atla
Ana menü
Gezinti
  • Anasayfa
  • Hakkımızda
  • İçindekiler
  • Rastgele madde
  • Seçkin içerik
  • Yakınımdakiler
Katılım
  • Deneme tahtası
  • Köy çeşmesi
  • Son değişiklikler
  • Dosya yükle
  • Topluluk portalı
  • Wikimedia dükkânı
  • Yardım
  • Özel sayfalar
Vikipedi Özgür Ansiklopedi
Ara
  • Bağış yapın
  • Hesap oluştur
  • Oturum aç
  • Bağış yapın
  • Hesap oluştur
  • Oturum aç

İçindekiler

  • Giriş
  • 1 Sebepleri
  • 2 Örnekler
  • 3 Çözümleme
    • 3.1 Erişilmezliğe karşın profilleme
  • 4 Notlar
  • 5 Kaynakça
  • 6 Ayrıca bakınız

Erişilmez kod

  • Čeština
  • English
  • Español
  • فارسی
  • 日本語
  • Lietuvių
  • Nederlands
  • Polski
  • Русский
  • Simple English
  • Українська
Bağlantıları değiştir
  • Madde
  • Tartışma
  • Oku
  • Değiştir
  • Kaynağı değiştir
  • Geçmişi gör
Araçlar
Eylemler
  • Oku
  • Değiştir
  • Kaynağı değiştir
  • Geçmişi gör
Genel
  • Sayfaya bağlantılar
  • İlgili değişiklikler
  • Kalıcı bağlantı
  • Sayfa bilgisi
  • Bu sayfayı kaynak göster
  • Kısaltılmış URL'yi al
  • Karekodu indir
Yazdır/dışa aktar
  • Bir kitap oluştur
  • PDF olarak indir
  • Basılmaya uygun görünüm
Diğer projelerde
  • Vikiveri ögesi
Görünüm
Vikipedi, özgür ansiklopedi
Ulaşılamaz kod hatasını gösteren Eclipse 4.2 ekran görüntüsü

Erişilmez kod (yahut erişilemeyen kod, İngilizce: unreachable code) bilgisayar programlamada programın başka yerlerinden kontrol akışı olmayan kaynak koduna verilen addır.[1]

Erişilmez kod, bazen ölü kodla karıştırılmaktadır. Hâlbuki ölü kod, yürütülmesine rağmen bir etkisi olmayan kod için kullanılır.

Erişilmez kod, genelde birkaç sebepten dolayı istenilmez. Bu sebepler arasında

  • gereksiz bellek kaplaması
  • gereksiz komutların mikroişlemcinin önbelleğine alınmasıyla gerekli başka verilere orada yer kalmaması
  • program bakımı açısından kullanılmayan kodun bakım ve belgelenmesi için gereksiz yere zaman ve gayret sarf edilmesi.

Sebepleri

[değiştir | kaynağı değiştir]

Erişilmez kod, değişik sebeplerden dolayı olabilir:

  • karmaşık koşullu dallanmada programlama hataları;
  • eniyileyen derleyicinin dahili döngülerinin sonucunda;
  • yeni veya değiştirilmiş programın erişilmez koduna erişemeyen yetersiz test;
  • hata düzeltmeye çalışırken yanlışlıkla eklenen ikinci bir hatayla erişilmez kodu geçen ve testte de tespit edilemeyen kod;
  • işlevsel kodla iç içe olduğundan dolayı silinmemesi tercih edilmiş kullanılmayan kod
  • silinmesi unutulmuş kullanılmayan kod;
  • giriş verileri değişeceğinden dolayı artık erişilemeyecek kod;
  • kasten sonradan tekrar "canlandırılmak" üzere bırakılmış karmaşık kullanılmayak kod;
  • programdan daha uzaklaştırılmamış olan, hata ayıklamak veya geliştirmede faydası olduğundan eklenmiş kod.

Son beş durumda erişilmez kodun orada olma sebebi kalıtsal, yani artık kullanımda olmayan bu kod, eskiden kullanılmakta olan bir koddur.

Örnekler

[değiştir | kaynağı değiştir]

Aşağıdaki C kodu parçasına dikkat ediniz:

int foo (int iX, int iY)
{
  return iX + iY;
  int iZ = iX*iY;
}

int iZ = iX*iY;'in tanımına işlev daha önce geri döndüğünden hiçbir zaman erişilememektedir. Dolayısıyla iZ'in tanımı ıskarta edilebilir.

Çözümleme

[değiştir | kaynağı değiştir]

Erişilmez kodu tespit etmek, statik kod çözümlemesinin bir parçası olup kontrol akışı çözümlemesini kullanarak yürütüm süresince tanımlanan değişkenlere ve programın diğer durumlarına bakmadan hiç yürütülmeyen kodu bulmaya çalışır. Java gibi bazı bilgisayar dillerinde erişilmez kodun kimi çeşitleri menedilmiştir. Erişilmez kodu uzaklaştıran eniyilemeler (optimizasyon) ölü kod uzaklaştırması olarak bilinir.

Kod, eniyileştiren bir derleyicinin dâhilî değişmeleri sonucunda erişilmez olabilir. Buna örnek olarak common subexpression elimination sayılabilir.

Partikte çözümlemenin kapsamı, bulunan erişilmez kod yüzdesine kayda değer bir etkisi olur. Meselâ constant folding ve basit akış çözümlemesi, xyz komutunun aşağıda erişilmez olduğunu göstermektedir:

int iN = 2 + 1;

if (iN == 4)
{
  xyz
}

Aşağıdaki örnekte xyz'nin erişilemezliğinin tespîti için çok daha fazla kapsamlı çözümleme gerekmektedir.

double dX = sqrt(2);

if (dX > 5)
{
  xyz
}

Erişilmez kodu uzuklaştırma tekniği, ölü ve gereksiz kodu uzaklaştırmaya benzer.

Erişilmezliğe karşın profilleme

[değiştir | kaynağı değiştir]

Bazı durumlarda pratik bir yaklaşım, basit erişilememezlik kriterleri ve daha karmaşık durumlar için bir profilere ihtiyaç vardır. Profilleme (profiling), genelde bir kod parçasının erişilememezliği konusunda hiçbir şeyi ispat edemese de erişilememezlik potansiyeli olan kodu bulabilmek için iyi bir bulgusal (heuristic) yaklaşımdır. Şüpheli bir kod parçası bir kere bulunduktan sonra daha güçlü bir çözümleme metodu yâhut elden incelenerek gerçekten erişilemez olup olmadığı tespit edilebilir.

Notlar

[değiştir | kaynağı değiştir]
  1. ^ Debray, S. K. (1 Mart 2000). "Compiler techniques for code compaction" (PDF). ACM Transactions on Programming Languages & Systems (TOPLAS) (İngilizce). New York, USA. ss. 378-415. doi:10.1145/349214.349233. 24 Mart 2021 tarihinde kaynağından arşivlendi. Erişim tarihi: 25 Aralık 2011. 

Kaynakça

[değiştir | kaynağı değiştir]
  • Appel, A. W. 1998 Modern Compiler Implementation in Java. Cambridge University Press.
  • Muchnick S. S. 1997 Advanced Compiler Design and Implementation. Morgan Kaufmann.

Ayrıca bakınız

[değiştir | kaynağı değiştir]
  • Gereksiz kod
  • Kod kapsamı
  • Ölü kod
"https://tr.wikipedia.org/w/index.php?title=Erişilmez_kod&oldid=32796028" sayfasından alınmıştır
Kategoriler:
  • Derleyici optimizasyonu
  • Kaynak kodu
  • Yazılım mühendisliği terimleri
  • Yazılım hataları
  • Sayfa en son 13.57, 17 Mayıs 2024 tarihinde değiştirildi.
  • Metin Creative Commons Atıf-AynıLisanslaPaylaş Lisansı altındadır ve ek koşullar uygulanabilir. Bu siteyi kullanarak Kullanım Şartlarını ve Gizlilik Politikasını kabul etmiş olursunuz.
    Vikipedi® (ve Wikipedia®) kâr amacı gütmeyen kuruluş olan Wikimedia Foundation, Inc. tescilli markasıdır.
  • Gizlilik politikası
  • Vikipedi hakkında
  • Sorumluluk reddi
  • Davranış Kuralları
  • Geliştiriciler
  • İstatistikler
  • Çerez politikası
  • Mobil görünüm
  • Wikimedia Foundation
  • Powered by MediaWiki
Erişilmez kod
Konu ekle