Должен ли я инкапсулировать последний оператор `return` с помощью` else {return …} `, если это логически необязательно?

Какой формат лучше с точки зрения скорости, производительности и размера машинного кода?

Прошлой return инкапсулируется:

static bool MyClass::IsEqual(int A, int B)
{
if (A == B)
{
return true;
}
else
{
return false;
}
}

Прошлой return не инкапсулируется:

static bool MyClass::IsEqual(int A, int B)
{
if (A == B)
{
return true;
}
return false;
}

2

Решение

Какой формат лучше с точки зрения скорости, производительности и размера машинного кода?

Все они должны быть идентичными или близкими к нему. Более того, вы задали не тот вопрос.

Лучший вопрос был бы,

Что мне лучше и почему?

Имейте в виду, что код C ++ предназначен для чтения люди, не машины. Исходя из этого, основным мотивом выбора одного стиля кодирования над другим должно быть то, насколько он удобен для восприятия человеком. Как бы ни были важны эти соображения, к сожалению, они также субъективны. Суть в том, что вы должны решить для себя, что лучше, но важно то, что вы задаете правильные вопросы по правильным причинам и обдумываете ответ.

5

Другие решения

Чтобы ответить на ваш вопрос — сгенерируйте и посмотрите код ассемблера. Бьюсь об заклад, код ассемблера идентичен — так что нет разницы в производительности.

Я всегда удаляю if/else если возможно, учитывая ваш пример, я бы сделал:

static bool MyClass::IsEqual(int A, int B)
{
return (A == B);
}

Но я знаю, что примеры из реальной жизни не так просты, как этот.

6

Оба фрагмента кода должны давать один и тот же результат, так что это не аргумент ни для одного из них.

Что действительно решает, какую версию использовать, так это стиль кодирования. if/else Вариант имеет то преимущество, что обе ветви находятся на одном логическом уровне. Иногда это может быть хорошей причиной, чтобы написать это так.

2

Вторая форма немного более удобочитаема, поскольку снижает уровень вложенности. Нет абсолютно никакого снижения производительности за использование той или иной формы.

1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector