Сравнение с булевым литералом


Исходный код

if (result == true)
  return true;
else
  return result;

Что не так в этом коде

Если у тебя есть переменная булева типа, то нет необходимости её сравнивать с истиной или ложью, можно напрямую передавать её в оператор if. Вместо if (result == true) пишем просто if (result).

Если у тебя переменная какого-то другого типа, то следует пользоваться правилами неявного преобразования значений произвольного типа в булевы. Например, часто 0 и пустая строка эквивалентны значению «ложь».

Второй момент — что вовзращаем оператором return. Исходный код построен так, что при истинном значении переменной возвращается «истина», а при ложном — «ложь». То же самое можно выразить существенно короче:

return result;

На случай, если в переменной result присутствует значение не булева типа, а из функции необходимо возвратить именно булево значение, то следует пользоваться «двойным отрицанием»:

return !!result;

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

Что почитать