Filtro de colección de la columna vertebral -- javascript campo con array campo con backbone.js camp codereview Relacionados El problema

Backbone collection filter


5
vote

problema

Español

Tengo esta colección en mi aplicación Backbone:

  var AnswersCollection = Backbone.Collection.extend({     model: Answer,      initialize: function() {         console.log('Hello from new answers collection');     },      getCorrect: function() {         return this.where({correct: true});     },      getWrong: function() {         return this.where({correct: false});     },      randomSet: function(correct, wrong) {         arr1 = _.sample(this.getCorrect(), correct);         arr2 = _.sample(this.getWrong(), wrong);         result = _.shuffle(arr1.concat(arr2));         coll = new AnswersCollection(result)         return coll;     }  });   

Esto funciona, y se llama al aumingSet, una vista cuando la configuración tiene ciertas opciones o usuarios, haga clic en el botón 'Rerender', pero me pregunto que tal vez pueda mejorar este código? El flujo se ve así

  1. se seleccionan al azar x correctas
  2. seleccionado al azar y respuestas incorrectas
  3. baraja todas las respuestas
  4. Crear una matriz de respuestas, que se puede pasar a la nueva colección

Este código no parece cool, tal vez tendrá algunas ideas ¿Cómo hacerlo más fresco? :)

Original en ingles

I've got this Collection in my Backbone application:

var AnswersCollection = Backbone.Collection.extend({     model: Answer,      initialize: function() {         console.log('Hello from new answers collection');     },      getCorrect: function() {         return this.where({correct: true});     },      getWrong: function() {         return this.where({correct: false});     },      randomSet: function(correct, wrong) {         arr1 = _.sample(this.getCorrect(), correct);         arr2 = _.sample(this.getWrong(), wrong);         result = _.shuffle(arr1.concat(arr2));         coll = new AnswersCollection(result)         return coll;     }  }); 

This works, and randomSet is called by a View when config have certain options or user click on 'rerender' button, but I'm wondering that maybe I can improve this code ? The flow looks like this

  1. Get randomly selected X correct answers
  2. Get randomly selected Y wrong answers
  3. Shuffle all answers
  4. Create array of answers, that can be passed to new Collection

This code doesn't look to cool, maybe you will have some ideas how to make It cooler?:)

        

Lista de respuestas

4
 
vote
vote
La mejor respuesta
 

Código de revisión para Coolness es un primero;)

Algunas observaciones:

  • initialize : Si realmente todo lo que quiere hacer, hay Hola mundo , entonces debe sacarlo. initialize está destinado a inicializar su modelo con respuestas.

  • getCorrect getWrong3 son cortos de uno que se llaman una vez, debe incluirlos

  • arr1 , arr25 , 9988776655544336 e incluso 9988776655544337 son nombres bastante terribles, ¿qué tal < Código> correctAnswers , wrongAnswers , initialize0 y no creando initialize1 Desde que podría devolver los resultados de las nuevas respuestas de inmediato.

  • El problema más grave es que no está declarando las variables mencionadas anteriormente con initialize2 , eso es malo.

también, de una perspectiva de frescor , los tirantes en su propia línea es donde está.

que contrarrestaría esto:

  initialize3  
 

Reviewing code for coolness is a first ;)

Some observations:

  • initialize : if really all you want to do there is Hello World, then you should take it out. initialize is meant for initializing your model with answers.

  • getCorrect and getWrong are short one-liners that are called once, you should inline them

  • arr1, arr2, coll and even result are pretty terrible names, how about correctAnswers, wrongAnswers, answers and not creating coll since you could return the results of new AnswersCollection immediately.

  • The most serious problem though is that you are not declaring the prior mentioned variables with var, that is bad.

Also, from a coolness perspective, braces on their own line is where it's at.

I would counter-propose this:

var AnswersCollection = Backbone.Collection.extend( {     model: Answer,      randomSet: function(correct, wrong)      {         var correctAnswers = _.sample(this.where({correct: true}), correct),             wrongAnswers = _.sample(this.where({correct: false}), wrong),             answers = _.shuffle(correctAnswers.concat(wrongAnswers));          return new AnswersCollection( answers );     } }); 
 
 
 
 

Relacionados problema

4  Modelo de usuario con Backbonejs y RequerJS con casos de prueba en Jasmine  ( User model with backbonejs and requirejs with test cases in jasmine ) 
He estado tomando una puñalada en la implementación de casos de prueba utilizando el marco de pruebas de jazmín. Para hacerlo, he hecho una aplicación que tie...

2  Backbone / RequitJs y dependencias circulares  ( Backbone requirejs and circular dependencies ) 
Estoy tratando de tener una vista principal de la aplicación con referencias de todas mis puntos de vista para administrar y llamar a las transiciones entre e...

6  Herramienta simple de javascript backbone.js para resaltar múltiples términos de búsqueda  ( Simple javascript backbone js tool to highlight multiple search terms ) 
Escribí una herramienta simple de JavaScript para resaltar múltiples palabras clave al mismo tiempo en algún texto. Utiliza un color diferente para cada palab...

4  Diseño de MVC usando backbone.js  ( Mvc design using backbone js ) 
Soy un backbone.js Newbie. He creado una aplicación de selección de colores usando Backbone.js. Estoy tratando de averiguar si he clavado el concepto de MVC. ...

12  Elemento de lista desordenados a través de la plantilla  ( Unordered list element via templating ) 
Estoy creando un elemento de lista desordenado en la columna vertebral a través de la plantilla de underscore: <ul id="FrontRack" style=" backgroun...

-1  MEJORA DE CÓDIGO DE MARIONETA DE MARIONETA  ( Backbone marionette code improvement ) 
Tengo este bloque de código repetitivo y estoy buscando formas de hacerlo reutilizable y lo más plano posible. Aquí está: Controller.showKeyboardRegion =...

7  MV * Patrón para un juego de mesa  ( Mv pattern for a board game ) 
He hecho un pequeño juego en JavaScript, mientras se entera simultáneamente sobre el controlador de visualización modelo más popular. El juego es este, hay 3 ...

8  Página de documentación de API interactiva de un Diccionario Restante API usando Backbone.js  ( Interactive api documentation page of a restful dictionary api using backbone js ) 
Estoy trabajando en la documentación de API interactiva de un servicio de diccionario de descanso. La página debe permitir que los probadores prueben las dife...

4  Diseño de la API de inyección de dependencia de Backbone.js  ( Backbone js dependency injection api design ) 
Estoy escribiendo un complemento de inyección de dependencia para la Backbone JavaScript Framework, y no estoy seguro de cuál es la API Para el argumento co...

3  Primer intento incorporando backbone.js en mi código  ( First attempt incorporating backbone js in my code ) 
Tengo la sensación de que podría estar mal, ¿qué cosas más importantes mejorarían en este código? El código está manejando básicamente un recorrido en el pr...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos