Я думаю, что это в большей степени зависит от того, что вы делаете.
Это простой пример, но, как правило, если есть условие, что я «извлечение» из другой логики цикла, я вытащу его как можно быстрее с продолжением, а не с добавлением к сложности будущее, если заявления (ваш первый пример, если это условие, которое может быть извлечено упрощение будущей логики) например:
for (int i = 0 ; i < n ; i++)
{
if(obj[i] != null && obj[i].instanceOf("A")) {
doSomething();
} else if(obj[i] != null && obj[i].instanceOf("B"){
doSomethingElse();
}
}
сейчас стало ясно, что извлекая первое условие в
if(obj[i] == null) {
continue;
}
может сохранить некоторую путаницу так как этот цикл будет усилен. Я часто использую эту тактику для тестирования параметров метода и возвращаюсь раньше или бросаю исключение.
Также (это полностью отвлеченный, а не часть ответа вообще!), Я бы сказал, что если вы когда-нибудь увидите сбалансированное состояние «Truly», вы можете серьезно подумать о своем дизайне OO. Если йоЗотеЬЫпд и someOtherCondition было то, что похожи, они, вероятно, следует различных реализаций метода определенной в базовом классе или интерфейсе, что приводит к этому коду:
for (int i = 0 ; i < n ; i++)
{
obj[i].doSomething();
}
Довольно уверен, что компилятор будет оптимизировать как и они будут иметь то же самое представление. – talnicolas
Вы найдете ответы, которые будут сильно отличаться для нетривиального бита кода. Это действительно зависит от того, сколько другого кода в цикле, и что именно оно делает. –
Если предложение 'if' является коротким, а предложение' else' дольше, я бы использовал первую форму. –