2017-07-31 1 views
0

La fonction getRegistry() crée un objet de registre avec plusieurs propriétés, qui partagent la même structure en JavaScript:Comment obtenir DRY sur les lignes `value: _value (this.from, this.to, line)` ci-dessous?

'use strict' 

function getRegistry(line) { 
    return { 
    systemId: { 
     from: 1, to: 3, 
     name: 'system_id', 
     value: _value(this.from, this.to, line) 
    }, 
    originUnity: { 
     from: 4, to: 7, 
     name: 'origin_unity', 
     value: _value(this.from, this.to, line) 
    }, 
    // ... similar property definition as above 
    } 
} 

function _value (from, to, line) { 
    return line.substring(from - 1, to) 
} 

module.exports = getRegistry 

Comment changer la définition de la propriété dans la ligne value: _value(this.from, this.to, line) afin d'éliminer les duplications de code?

Répondre

1

Le code ne semble pas bâclée pour moi ... mais si vous voulez vraiment être code efficace que possible, c'est la seule amélioration que je vois:

function getRegistry(line) { 
     return { 
     systemId: { 
      from: 1, to: 3, 
      name: 'system_id', 
      value: _value(this, line) 
     }, 
     originUnity: { 
      from: 4, to: 7, 
      name: 'origin_unity', 
      value: _value(this, line) 
     }, 
     // ... similar property definition as above 
     } 
    } 

    function _value (obj, line) { 
     return line.substring(obj.from - 1, obj.to) 
    } 
+0

de Nice! Ce travail pour l'instant, puisqu'il s'agit du premier objet brouillon. – ranieribt