13.04.2014, 17:17
|
|
Профессор
|
|
Регистрация: 26.03.2012
Сообщений: 823
|
|
Делаете ли вы такие проверки
Вот функции:
function x(data) {
if (data) {
alert(data.x);
}
}
function y(data) {
alert(data.y);
}
// очевидные вызовы
x({x: 'x'});
y({y: 'y'});
// неочевидные
x(); // тут условие
y(); // тут ошибка !
Функции должны вызываться с аргументами, иначе вызов просто теряет смысл.
В первом случае вызов пустой функции не вызовет ошибку, так как есть условие.
Во втором случае будет ошибка.
Делаете ли вы подобные проверки?
Последний раз редактировалось dmitry111, 13.04.2014 в 17:23.
|
|
13.04.2014, 17:24
|
|
Профессор
|
|
Регистрация: 26.03.2012
Сообщений: 823
|
|
блин, хотел в оффтопике создать
|
|
13.04.2014, 17:26
|
|
|
Регистрация: 10.07.2008
Сообщений: 3,873
|
|
нет, как ошибку тогда искать, если все покрыто условиями и ничего не выполнится, алерты чтоли построчно расставлять
|
|
13.04.2014, 17:39
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
если от выполнения функции зависит важный функционал, то проверку можно не делать или хотя бы выводить экскепшн. Если же ее выполнение не играет огромную роль, можно сделать проверку и исключать ошибку. В любом случае все зависит от задачи.
|
|
13.04.2014, 17:42
|
Профессор
|
|
Регистрация: 16.03.2010
Сообщений: 1,618
|
|
Делаю проверки только там, где это нужно. Например:
function x(data) {
// data не проверяю, потому что если там не объект, что-то не так
// поэтому пусть будет ошибка, чтобы об этом стало известно
if (data.x) // проверяю, потому что поле "x" может быть, а может и не быть при нормальной работе
}
Мне не нравится, например, что jQuery, когда ничего не находит, возвращает пустую коллекцию. Вешаешь событие по какому-нибудь селектору, а потом верстка меняется, по селектору уже ничего не находится, но всё это происходит по-тихому и о баге может быть долго ничего не известно.
|
|
13.04.2014, 18:06
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
Я делаю проверки на верхнем уровне. На нижнем уровне от ошибок опечаток защищает JSDOC. На нижнем уровне таких элементарных ошибок, вроде некорректного типа, вообще не должно быть - их надо решать раньше.
;(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);
верхние и нижние уровни - это уровни внешний\внутренний, что-то типа того
Сообщение от Sweet
|
Мне не нравится, например, что jQuery, когда ничего не находит, возвращает пустую коллекцию.
|
плюсую. это суть JS - стандартная библиотека редко кидает исключения.. легче ведь просто null вернуть и всё в шоколаде В вот в Yii за любую оплошность - по рукам. Ну хз, кому как удобнее. Легче с исключениями, конечно
Последний раз редактировалось melky, 13.04.2014 в 18:11.
|
|
13.04.2014, 19:00
|
Особый гость
|
|
Регистрация: 02.04.2010
Сообщений: 4,260
|
|
Ошибки не нужно прятать, их нужно уметь правильно логгировать и быстро находить.
|
|
13.04.2014, 19:12
|
|
junior
|
|
Регистрация: 29.11.2011
Сообщений: 3,924
|
|
Сообщение от devote
|
все зависит от задачи
|
аналогично. На подобный вопрос другого ответа просто не может быть.
melky, "floor" Bitwise Operators (примеры)
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Последний раз редактировалось nerv_, 13.04.2014 в 19:17.
|
|
13.04.2014, 23:01
|
|
Профессор
|
|
Регистрация: 13.03.2013
Сообщений: 1,572
|
|
Сообщение от monolithed
|
Ошибки не нужно прятать, их нужно уметь правильно логгировать и быстро находить.
__________________
|
try..catch
if (data) не корректная проверка data == 0, data == false, data == 'undefined'
|
|
14.04.2014, 11:07
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
да эт сферический пример в вакууме ради примера, но за ссыль спасибо
|
|
|
|