Erişilmez kod (yahut erişilemeyen kod, İngilizce: unreachable code) bilgisayar programlamada programın başka yerlerinden olmayan kaynak koduna verilen addır.
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
Erişilmez kod, değişik sebeplerden dolayı olabilir:
- karmaşık koşullu dallanmada programlama hataları;
- 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
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
Erişilmez kodu tespit etmek, bir parçası olup çözümlemesini kullanarak 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, 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
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 (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
Kaynakça
- 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
wikipedia, wiki, viki, vikipedia, oku, kitap, kütüphane, kütübhane, ara, ara bul, bul, herşey, ne arasanız burada,hikayeler, makale, kitaplar, öğren, wiki, bilgi, tarih, yukle, izle, telefon için, turk, türk, türkçe, turkce, nasıl yapılır, ne demek, nasıl, yapmak, yapılır, indir, ücretsiz, ücretsiz indir, bedava, bedava indir, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, resim, müzik, şarkı, film, film, oyun, oyunlar, mobil, cep telefonu, telefon, android, ios, apple, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, pc, web, computer, bilgisayar
Erisilmez kod yahut erisilemeyen kod Ingilizce unreachable code bilgisayar programlamada programin baska yerlerinden olmayan kaynak koduna verilen addir Ulasilamaz kod hatasini gosteren Eclipse 4 2 ekran goruntusu Erisilmez kod bazen olu kodla karistirilmaktadir Halbuki olu kod yurutulmesine ragmen bir etkisi olmayan kod icin kullanilir Erisilmez kod genelde birkac sebepten dolayi istenilmez Bu sebepler arasinda gereksiz bellek kaplamasi gereksiz komutlarin mikroislemcinin onbellegine alinmasiyla gerekli baska verilere orada yer kalmamasi program bakimi acisindan kullanilmayan kodun bakim ve belgelenmesi icin gereksiz yere zaman ve gayret sarf edilmesi SebepleriErisilmez kod degisik sebeplerden dolayi olabilir karmasik kosullu dallanmada programlama hatalari dahili dongulerinin sonucunda yeni veya degistirilmis programin erisilmez koduna erisemeyen yetersiz test hata duzeltmeye calisirken yanlislikla eklenen ikinci bir hatayla erisilmez kodu gecen ve testte de tespit edilemeyen kod islevsel kodla ic ice oldugundan dolayi silinmemesi tercih edilmis kullanilmayan kod silinmesi unutulmus kullanilmayan kod giris verileri degiseceginden dolayi artik erisilemeyecek kod kasten sonradan tekrar canlandirilmak uzere birakilmis karmasik kullanilmayak kod programdan daha uzaklastirilmamis olan hata ayiklamak veya gelistirmede faydasi oldugundan eklenmis kod Son bes durumda erisilmez kodun orada olma sebebi kalitsal yani artik kullanimda olmayan bu kod eskiden kullanilmakta olan bir koddur OrneklerAsagidaki C kodu parcasina dikkat ediniz int foo int iX int iY return iX iY int iZ iX iY int iZ iX iY in tanimina islev daha once geri dondugunden hicbir zaman erisilememektedir Dolayisiyla iZ in tanimi iskarta edilebilir CozumlemeErisilmez kodu tespit etmek bir parcasi olup cozumlemesini kullanarak tanimlanan degiskenlere ve programin diger durumlarina bakmadan hic yurutulmeyen kodu bulmaya calisir Java gibi bazi bilgisayar dillerinde erisilmez kodun kimi cesitleri menedilmistir Erisilmez kodu uzaklastiran eniyilemeler optimizasyon olu kod uzaklastirmasi olarak bilinir Kod dahili degismeleri sonucunda erisilmez olabilir Buna ornek olarak common subexpression elimination sayilabilir Partikte cozumlemenin kapsami bulunan erisilmez kod yuzdesine kayda deger bir etkisi olur Mesela constant folding ve basit akis cozumlemesi xyz komutunun asagida erisilmez oldugunu gostermektedir int iN 2 1 if iN 4 xyz Asagidaki ornekte xyz nin erisilemezliginin tespiti icin cok daha fazla kapsamli cozumleme gerekmektedir double dX sqrt 2 if dX gt 5 xyz Erisilmez kodu uzuklastirma teknigi olu ve gereksiz kodu uzaklastirmaya benzer Erisilmezlige karsin profilleme Bazi durumlarda pratik bir yaklasim basit erisilememezlik kriterleri ve daha karmasik durumlar icin bir profilere ihtiyac vardir Profilleme profiling genelde bir kod parcasinin erisilememezligi konusunda hicbir seyi ispat edemese de erisilememezlik potansiyeli olan kodu bulabilmek icin iyi bir heuristic yaklasimdir Supheli bir kod parcasi bir kere bulunduktan sonra daha guclu bir cozumleme metodu yahut elden incelenerek gercekten erisilemez olup olmadigi tespit edilebilir Notlar Debray S K 1 Mart 2000 Compiler techniques for code compaction PDF ACM Transactions on Programming Languages amp Systems TOPLAS Ingilizce New York USA ss 378 415 doi 10 1145 349214 349233 24 Mart 2021 tarihinde kaynagindan Erisim tarihi 25 Aralik 2011 KaynakcaAppel A W 1998 Modern Compiler Implementation in Java Cambridge University Press Muchnick S S 1997 Advanced Compiler Design and Implementation Morgan Kaufmann Ayrica bakinizGereksiz kod Olu kod