analizer
26.12.2011 08:51 mcabber
недавняя кладка кирпичей от дедфуда навела меня на решение давнего вопроса
стиля кода. а именно как правильно писать:
T func(U param) {
if (param.bad())
return T();
T t;
// fill 't' with data
}
или
T func(U param) {
T t
if (!param.bad()) {
// fill 't' with data
}
return t;
}
после прочтения поста дедфуда, становится очевидным, что второй вариант не
только симпатичнее, но и оптимальнее, в силу действующего в нём RVO.
Пойду попереписываю свои говнокоды.
Recommended by:
@0xd34df00d,
@DZhon
Да у тебя же преждевременная оптимизация!
code style ≠ premature optimization, так что всё ок.
подождите, говно ведь какое-то. Под if должна быть та ветка, которая короче.
Именно.
это предрассудок.
там одна ветка. она не может быть короче или длиннее.
Там две ветки.
одна ветка, один return, и не надо делать вид что веток две.
ладно, хватит полемики. предложи лучший вариант
if(condition) {
do_foo;
return;
}
do_bar;
return;
Это эквивалентно:
if(!condition) {
do_bar;
return;
}
do_foo;
return;
Веток две.
спасибо, кэп. вот только пример приведён для случая, когда ветки неэквивалентны