Делаете ли вы такие проверки
Вот функции:
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, время: 16:53. |