В примерах по AngularJS, которые используют сервисы всегда демонстрируют такой паттерн:
module.factory('myFactory', function($log) {
var myFactory = {
this.getLog = function () {
console.log('Bla bla bla')
}
};
return myFactory;
});
Не могу понять почему не сделать вот так:
module.factory('myFactory', function($log) {
return {
this.getLog = function () {
console.log('Bla bla bla')
}
};
});
Зачем нужен этот бесполезный var myFactory?
Ответ
Это скорее всего дело стилистики: возвращать что-либо как есть либо через промежуточную переменную. Использование промежуточной переменной потенциально делает код гибче на случай добавления функционала и дружелюбным к отладке, когда точку остановки можно будет поставить сразу после переменной. На мой взгляд переменными оперировать удобнее, чем анонимными объектами или результатами вызовов. В данном случае, если например фабрику нужно будет расширить миксинами или пронаследовать от другого объекта, то удобнее это будет сделать с использованием переменной. Хочу поделиться еще одним вариантом, который описывается в Angular Style Guide
module.factory('myFactory', function($log) {
var myFactory = {
foo: foo,
bar: bar
};
return myFactory;
////////
function foo() {
console.log('foo');
}
function bar() {
console.log('bar');
}
}
Плюс в том, что размещение публичного интерфейса сверху делает код фабрики читаемее и позволяет сразу увидеть все, с чем она позволяет работать + сразу видно то, что нужно покрывать тестами. Это особенно полезно тогда, когда код фабрики разрастается и приходится скроллить, чтобы понять, что вообще в ней есть. Применим этот подход не только к фабрике, но и контроллерам, директивам и т.д.
Комментариев нет:
Отправить комментарий