Делаете ли вы такие проверки
Вот функции:
function x(data) { if (data) { alert(data.x); } } function y(data) { alert(data.y); } // очевидные вызовы x({x: 'x'}); y({y: 'y'}); // неочевидные x(); // тут условие y(); // тут ошибка ! Функции должны вызываться с аргументами, иначе вызов просто теряет смысл. В первом случае вызов пустой функции не вызовет ошибку, так как есть условие. Во втором случае будет ошибка. Делаете ли вы подобные проверки? |
блин, хотел в оффтопике создать :(
|
нет, как ошибку тогда искать, если все покрыто условиями и ничего не выполнится, алерты чтоли построчно расставлять
|
если от выполнения функции зависит важный функционал, то проверку можно не делать или хотя бы выводить экскепшн. Если же ее выполнение не играет огромную роль, можно сделать проверку и исключать ошибку. В любом случае все зависит от задачи.
|
Делаю проверки только там, где это нужно. Например:
function x(data) { // data не проверяю, потому что если там не объект, что-то не так // поэтому пусть будет ошибка, чтобы об этом стало известно if (data.x) // проверяю, потому что поле "x" может быть, а может и не быть при нормальной работе } Мне не нравится, например, что jQuery, когда ничего не находит, возвращает пустую коллекцию. Вешаешь событие по какому-нибудь селектору, а потом верстка меняется, по селектору уже ничего не находится, но всё это происходит по-тихому и о баге может быть долго ничего не известно. |
Я делаю проверки на верхнем уровне. На нижнем уровне от
;(function (__NAMESPACE__) { /** * floor - функция нижнего уровня. используется внутри * @param {number} x */ function floor (x) { return x | 0; } /** * Функция верхнего уровня. Экспортируется\используется извне */ function format (x) { var numeric = isFinite(x) ? x : parseInt(x); if (!isFinite(numeric)) { throw "x must be numeric" } numeric = floor(numeric) // остальная логика. в number_format уже нет проверки аргумента на корректность, как и во floor return number_format(numeric); } // экспорт. __NAMESPACE__.format = format; })(window.APP); верхние и нижние уровни - это уровни внешний\внутренний, что-то типа того Цитата:
|
Ошибки не нужно прятать, их нужно уметь правильно логгировать и быстро находить.
|
Цитата:
melky, "floor" http://javascript.ru/forum/offtopic/...tml#post306611 |
Цитата:
if (data) не корректная проверка data == 0, data == false, data == 'undefined' |
Цитата:
|
Часовой пояс GMT +3, время: 12:48. |