Üzerinde çalıştığım büyük bir projede (pseudocode) aşağıdaki döngü notunu buldum:
var someOtherArray = [];
for (var i = 0, n = array.length; i < n; i++) {
someOtherArray[i] = modifyObjetFromArray(array[i]);
}
Dikkatimi çeken bu ekstra "n" değişken. Daha önce hiç bu şekilde yazılmış bir lop görmedim.
Açıkçası bu senaryoda bu kodun aşağıdaki şekilde yazılamamasının bir nedeni yoktur (ki bu çok alışkınım):
var someOtherArray = [];
for (var i = 0; i < array.length; i++) {
someOtherArray[i] = modifyObjetFromArray(array[i]);
}
Ama beni düşündürdü.
Böyle bir for döngüsü yazarken mantıklı bir senaryo var mı? Fikir akla geliyor "dizi" uzunluğu for döngüsü yürütme sırasında değişebilir, ama biz orijinal boyuttan daha fazla döngü istemiyorum, ama böyle bir senaryo hayal edemiyorum.
Dizinin döngü içinde küçültülmesi de pek mantıklı değil, çünkü OutOfBoundsException'ı büyük olasılıkla alacağız.
Bu ek açıklamanın yararlı olduğu bilinen bir tasarım deseni var mı?
Düzenle @ Jerry101 tarafından belirtildiği gibi performans nedeni. İşte oluşturduğum performans testine bir link: http://jsperf.com/ninforloop . Bence çok büyük bir dizi olsa yineleme sürece fark yeterince büyük değil. Ben kopyaladım kodu sadece 20 kadar eleman vardı, bu yüzden bu durumda okunabilirlik performans dikkate ağır basar düşünüyorum.
n
, varyant kullanımı varyanttan daha yavaş array.Length
olabilir.