Решил поиграться с новой версией WebStorm - IDE для web-разработки (JS+HTML+CSS и много чего ещё) от бравых авторов IDEA и TeamCity. Особенно заинтересовала инспекция кода JavaScript. На фрагменте кода
function bool2str(b) {
function bool2str(b) {
return b == true ? 'yes' : 'no';
}
получил результат: Pointless boolean expression. Expression "b == true ?" can be simplified to "b ?". На первый взгляд всё правильно, но только на первый.
Как понятно из названия, функция предназначена для преобразования булевского значения в строку. Приведу несколько примеров из консоли Chrome:
получил результат: Pointless boolean expression. Expression "b == true ?" can be simplified to "b ?". На первый взгляд всё правильно, но только на первый.
Как понятно из названия, функция предназначена для преобразования булевского значения в строку. Приведу несколько примеров из консоли Chrome:
Теперь "упростим" функцию, как предлагает нам WebStorm:
function truthy2str(b) {
return b ? 'yes' : 'no';
}
И посмотрим на результат:
Приплыли. Любой булевский объект считается truthy, даже если он содержит false, только на том основании, что он не null. Примерно поэтому же !!new Boolean(false) === true.
На самом деле, я сам хотел сделать эту "оптимизацию" ещё когда разрабатывал этот код в Aptana, но мои unit-тесты меня же и обломали (слава unit-тестированию!), а теперь пришлось создать багрепорт на WebStorm в первый же день работы с этой IDE. Всё как обычно - везде сплошные баги (в Eclipse с момента выхода версии 3.7 нашёл уже 29 уникальных багов).
Комментариев нет:
Отправить комментарий