Derleyicinin kararı bazı durumlarda teorik olarak olanaksızdır. Bazı durumlarda ise kodun derleyici tarafından incelenip mutlaka sonlanacağını garantilemek çok zordur.
Bir işlevin her durumda bir değer döndürüp döndürmeyeceğini bilmesi bile çok zor olur. Ondan sonra da "bunu anladım, sonunda return gerekmiyor" veya "bunu anlayamadım, return'de ısrar edeyim" diye ikili davranmasının da istemeyiz.
Ayrıca, ben bir programcı olarak her baktığımda kodu incelememi gerektiren kodlar üzerinde çalışmak istemem. :)
Ayrıca, derleyicinin sonuçta bir kod üretmesi gerekiyor. O sondaki
if(++i==ilk.length){
return 0;
}
denetimi için kod üretecek; şart... O if'in "olmadığında" diye bir dalı var. Mutlaka kod üretmesi gerek. Ne üretsin? return 0? return 1? sabit diski formatlama kodu? (Nasıl olsa gelinmez ya ;) )? Bilemez.
Son olarak, derleyicinin bizim adımıza karar vermesini de istemeyiz. Bu davranışı kodumuzdaki hataları gizleyebilir.
Yine son olarak, :) zaten aslında bilse yine de haklı: ++i'nın ilk.length'e eşit olmadığı durumlar var. Örneğin "a" ile "a"yı karşılaştırdığında if'e gelindiğinde i==ilk.length zaten. Bir arttırınca geçersiz oluyor ve program işlevden return olmadan çıkıyor...
Ali
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]