Недоступный код: ошибка или предупреждение? - PullRequest
21 голосов
/ 17 февраля 2010

Это вопрос дизайна языка:

Как вы думаете, недоступный код (на языках программирования в целом) должен вызывать предупреждение (т.е. "сообщить о проблеме и все равно скомпилировать") или ошибка («Отказаться от компиляции»)?

Лично я чувствую, что это должно быть ошибкой: если программист пишет кусок кода, он всегда должен быть выполнен с намерением запустить его в некотором сценарии. Но, например, компилятор C #, похоже, не согласен с этим и просто выдает предупреждение.

Примечание: я понимаю, что хорошее обнаружение мертвого кода - очень сложная проблема, но этот вопрос не в фокусе.

Вот несколько примеров фрагментов кода, в которых некоторые операторы явно недоступны:

return;
foo();

-

throw new Exception();
foo();

-

if (...) {
  return;
} else {
  throw new Exception();
}
foo();

Ответы [ 12 ]

2 голосов
/ 17 февраля 2010

По умолчанию это должно быть предупреждение с флагом компилятора, что позволяет рассматривать его как ошибку. Требование , чтобы оно было неизменным, одно или другое невнимательно.

2 голосов
/ 17 февраля 2010

Хорошая причина для того, чтобы этот код был на этапе разработки: вы хотите временно отключить определенный код, но вы все же хотите, чтобы этот код проверялся на синтаксис.

например:

int i = 2, j = 3;
int result = 0;

// FIXME: Commented out for now because I have to recheck calculation
if (false) {
  result = i*2+j+3+i*j;
}

System.out.println("Result of difficult calculation = "+result);

Если вы поставите список "result = i * 2 + j + 3 + i j;" просто в / комментариях * / вы уверены, что при удалении или переименовании определенных переменных (например, i) вы не получите сообщение об ошибке.

...