30
Jan
09

for får inte får, men for får lokala variabler!

Följande kod är inte direkt ovanlig:

Iterator iter = list.iterator();
while(iter.hasNext()){
String s = iter.next();
}
// lite annan kod
Iterator iter2 = list2.iterator();
while(iter.hasNext()){
String s = iter2.next();
}

Fullt fungerande kod, med problemet att den andra loopen inte kommer köras eftersom iter.hasNext returnerar false (den kördes i första loopen).
Det jag vill påpeka här (ok, egentligen kanske det är boken effective java som vill påpeka det, lite inspiration får man ha…) är att while loopar är farliga, och bör så ofta de kan skrivas om till for loopar.
Varför? jo forLoopar skapar variabler i sin deklaration som bara finns inuti loopen. Medan whileloopen inte gör det. så motsvarande kod som forLoop:

for(Iterator iter = list.iterator();iter.hasNext();){
String s = iter.next();
}

Ingen risk för att jag råkar ta fel iterator 5 rader längre ner när jag behöver en iterator till.
Just i det här fallet kanske

for(String s : list){
}

är effektivast, Men Iterators tex är inte direkt ovanliga, nästa gång ni träffas så prova en for!


0 Svar to “for får inte får, men for får lokala variabler!”



  1. Kommentera

Lämna en kommentar


Mest klickade

  • Inget