Теперь, когда вы изменили имена переменных в (b), мой первоначальный ответ больше не применяется, поэтому я скажу следующее:
Современные компиляторы очень хороши в оптимизации и могут сделать многие микрооптимизации программиста устаревшими. Однако они не могут сделать ваш код более понятным для других. Таким образом, хорошее правило, которому нужно следовать, это в первую очередь написать свой код так, чтобы его было легко читать.
Если после этого вы обнаружите, что ваша программа работает слишком медленно или занимает слишком много памяти, найдите причину этой конкретной проблемы и начните оптимизацию.
Редактировать : в ответ на ваш комментарий я отвечаю, что не буду беспокоиться о рефакторинге. Единственное изменение, которое я хотел бы сделать, - это переформатировать (а) так, чтобы он был более читабельным и соответствовал правилам кодирования. Что-то вроде:
Obj p = curScope.locals, last = null;
while (p != null) {
if (p.name.equals(name)) {
error(name + " declared twice");
last = p;
p = p.next;
}
}
if (last == null) {
curScope.locals = obj;
} else {
last.next = obj;
}
Дополнительные несколько нажатий клавиш избавят вас от головной боли, если вы или кто-либо другой решит добавить инструкцию к одному из этих предложений if
или else
, не забывая добавить фигурные скобки.