Разьве можно так кодировать?
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 07.02.05 12:58
Оценка:
Вчера читал книжку JAVA IN A NUTSHELL, Полное руководство, Девид Фленэген; O'REILLY, O-bhv, Киев 1998.

На странице 55 в разделе "Операторы break и continue с метками" приведены следующие два примера использования.
Оператор break с меткой:
test: 
if (check(i)){
  try{
    for(int j = 0; j < 10; j++){
      if ( j > i ) break;
      if ( a[i][j] == null)
        break test;
    }
  }
  finally {cleanup(a, i, j); }
}

Оператор continue с меткой:
big_loop:
while(!done){
  if ( test(a, b) == 0 ) continue;
  try{
    for (int i = 0; i < 10; i++){
      if ( a[i] == null)
        continue;
      else if (b[i] == null)
        continue big_loop;

      doit(a[i], b[i]);
    }
  }
  finally { cleanup(a, b); }
}

Ну, что я могу сказать. Волосы у меня дыбом встали. Разьве можно так кодировать? Тем более, разьве можно в книгах типа "JAVA IN A NUTSHELL полное руководство" приводить такие не культурные примеры кода?


Я бы, например, написал что-то вроде такого:
IF check(i) THEN
  FOR j := 0 TO MIN(9, i) DO
    IF a[i, j] = NIL THEN cleanup(a, i, j) END
  END
END

WHILE ~done DO
  IF test(a, b) # 0 THEN
    FOR i := 0 TO 9 DO
      IF a[i] # NIL THEN
        IF b[i] # NIL THEN doit(a[i], b[i]) ELSE cleanup(a, b) END
      END 
    END
  END
END
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.