Я использую ExtJS 4 и соблюдаю их шаблон MVC. Я немного запутался в том, куда помещать вспомогательные функции, используемые обработчиками событий. Это в настоящее время то, что я делаю:ExtJS: размещение функции контроллера
Ext.define('App.controller.myController, {
extend: 'Ext.app.Controller.
stores: [...],
models: [...],
views: [...],
init: function() {
this.control({
'selector' : {
event1: this.onEvent1,
event2: this.onEvent2
}
});
},
onEvent1: function(args) {
// do stuff
helperFn();
},
onEvent2: function(args) {
// do other stuff
helperFn();
}
});
// is this 'right'?
function helperFn() {
// do other, other stuff
}
Правильно ли это? Или я должен сделать что-то вроде:
Ext.define('App.controller.myController, {
extend: 'Ext.app.Controller.
stores: [...],
models: [...],
views: [...],
init: function() {
this.control({
'selector' : {
event1: this.onEvent1.bind(this),
event2: this.onEvent2.bind(this)
}
});
},
onEvent1: function(args) {
// do stuff
this.helperFn();
},
onEvent2: function(args) {
// do other stuff
this.helperFn();
},
helperFn(): function() {
// do other, other stuff
}
});
Один стиль предпочтительнее? То есть есть ли какие-либо существенные недостатки в сравнении с другими?
А я вижу. Да, традиционный стиль, похожий на ООП, - это то, что я собирался сделать - спасибо за то, что он указал на глобальную вещь, и спасибо, что нашли время ответить – Colin
Определение класса Utility со вспомогательными функциями - это то, что я делаю, я считаю, что это очень элегантное и сухое решение. +1 –
Я был бы осторожен с одиночками; мое эмпирическое правило - это любой код, который должен знать о своей области, принадлежит классу с этой областью. Утилитные синглтоны хороши для действительно упрощенных функций, которые не имеют побочных эффектов, но я бы предложил не использовать их, чтобы разделить код между двумя классами. Наследование и миксины прекрасно подходят для этого. Передача области вокруг, как и выше, является большим красным флагом в моей книге - через полгода вы обнаружите, что царапаете себе голову, пытаясь понять, что происходит, и вам придется отлаживать ее, а не просто читать код. –