Если цикл надо повторить N раз то конструкция for() проводит N+1 проверку условия что в ряде случаев не есть гут. А уж что пользовать - все конструкции хороши если они работают так как задумано автором и понимаются не автором (или тем же автором но через пять лет) :)