Задать вопрос
@oftywave

Как правильнее будет использовать оператор if?

задался таким вопросом, а имеется ли вообще в этом смысл. вот сам код
//пример и не более того.
std::string a = "a";

// то как я делаю сейчас
if (a == "a")
   success;
else
   not_success;

// но есть вариант проще и собственно работа одинаковая

if (a !=  "a")
   not_success;

success 
// do something


я понимаю, что это на вкус и цвет, но все же интересно ваше мнение.
  • Вопрос задан
  • 110 просмотров
Подписаться 1 Простой 5 комментариев
Пригласить эксперта
Ответы на вопрос 3
@galaxy
Зависит от содержания success/not_success.
Если внутри not_success, например, нет оператора выхода (return, throw, хоть goto), то во втором случае выполнится сначала not_success, а потом success.
Ответ написан
@res2001
Developer, ex-admin
Всегда, когда это возможно, использую второй вариант - это позволяет избежать лишних фигурных скобок, а как следствие лишней вложенности, отступов и т.п., код становится более читабельный и простой.
Но, конечно, в этом случае, в теле if должна быть передача управления куда-то (на обработчик ошибок, return и т.п.).
Часто делаю такую конструкцию:
do {
...
if(result == error) break;
...
} while(0);
if(result == error) {
обработка ошибок
}

В этом случае обработка ошибок находится в одном месте. Кроме того do..while(0) позволяет не использовать goto - вместо него используется break. Часто видел подобную схему в около системных сервисах и утилитах, но с использованием goto. У меня аллергия на goto, поэтому предпочитаю заворачивать в do..while(0).
Ответ написан
Комментировать
Имхо, второй вариант предпочтительнее, если success - это большой кусок кода или в нем есть дополнительные проверки условий (вложенные if).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы