Я помечен как C, хотя это, безусловно, относится ко многим языкам. Причина этого - часть вопроса, связанного с оптимизацией, которая зависит от компилятора.Написание избыточных программных операторов потока для ясности или соображений оптимизации?
Иногда мы сталкиваемся с ситуациями, как это в программах:
if(bob == 42)
{
/* ... */
return;
}
else
{
/* ... */
}
else
блока здесь не является строго необходимым, как вы, вероятно, можете видеть. То же самое происходит и с другими структурами управления потоком программ; некоторые «обычные» конструкции становятся излишними из-за особых условий. Возникает вопрос: есть ли причина писать эти избыточные блоки кода? Ясность? Может ли это помочь компилятору с оптимизацией, если ситуация была достаточно сложной?
+1, хороший момент с профилированием. Наверное, здесь нет общего правила, когда дело доходит до производительности. Когда дело доходит до читаемости, это, конечно, субъективная вещь. Я полагаю, что некоторые из них найдут много ненужных вложенных блоков 'else', которые трудно читать. – Oystein
Профилирование? В самом деле? Это похоже на большую работу за то, что любой современный компилятор, вероятно, относится к тому же. Кажется маловероятным, что профилировщик даже продемонстрировал бы разницу, даже если компилятор создавал другой код. (Если кто-то действительно интересуется, я бы сказал, глядя на сборщика, который создается.) – davep
@ davep: Конечно, никто не заботится о примере bob, но я мог представить себе более сложные сценарии, где было бы полезно проанализировать различия (не так много в C, может быть, но определенно в C++). – Oystein