Qual é a abordagem recomendada para funções auxiliares? Eu gostaria de escolher uma técnica e executá-la para criar minha nova "classe".
Aqui estão as opções de design que eu ponderei:
Opção 1: Função auxiliar no escopo externo, invoque com o contexto da instância
function createPane (pane) {
// logic to create pane
var proto = Object.create(this.paneList);
$.extend(paneProto, pane);
return paneProto;
}
Panes.prototype.initialize = function (panes) {
var _this = this;
_.each(panes, function () {
_this.panes.push(createPane.call(_this, this));
});
}
- Prós: Sintaxe simples.
createPane
não é publicado na instância. - Contras:
createPane
é acessível em outros escopos.
Opção 2: Função auxiliar no fechamento, invoque com o contexto da instância
Panes.prototype.initialize = (function () {
function createPane (pane) {
// same logic as last createPane
}
return function (panes) {
// same logic as before - calls createPane
}
})();
- Prós:
createPane
não é publicado na instância. - Contras: Menor legibilidade e testabilidade; O teste desse auxiliar deve ocorrer no escopo da inicialização.
Opção 3: adicione _ ao nome para indicar um método privado
Panes.prototype._createPane = function (pane) {
// same logic as last createPane
}
Panes.prototype.initialize = function (panes) {
// same logic as last, except calls this._createPane
}
- Prós: O contexto implícito de
_createPane
é a instância. Testabilidade do lado de fora. - Contras: Expor a função auxiliar na instância.
Opção 4: O auxiliar funciona como argumentos
Panes.prototype.initialize = (function (createPane) {
return function (panes) {
// same logic as before - calls createPane
}
})(function createPane () {
// same logic as last createPane
});
- Prós:
createPane
não é publicado na instância. As funções auxiliares não têm acesso um ao outro. - Contras: Menor legibilidade e testabilidade; O teste desse auxiliar deve ocorrer no escopo da inicialização.
object-oriented
javascript
TaylorMac
fonte
fonte
Respostas:
Primeiro, o JavaScript não tem classes .
Segundo, sua terceira opção parece mais racional para mim, mas também depende muito de seus requisitos. Além disso, você não deve se preocupar muito em expor a função auxiliar. Os profissionais da solução justificam totalmente o compromisso para mim.
Terceiro, seu tempo como desenvolvedor é valioso; Não torne as tarefas triviais difíceis de implementar, demoradas e mais propensas a erros humanos. A simplicidade do código fonte é um ótimo recurso.
fonte
As estáticas pertencem à Função IMO, no seu caso você tem uma estática privada, então ...
fonte