2017-09-09 3 views
3

Exemple:Est-ce une mauvaise pratique de créer setter et getters pour simplifier les fonctions en JavaScript?

Je travaille sur une interface utilisateur pour un projet de robotique qui affiche le rapport d'étalonnage de la roue. Le ratio par défaut est de 0,89 et j'ai un bouton qui incrémente le ratio de 0,01.

function incrementRatio() { 
    if (getStatus() != "Connected" || getRatio() >= 1.00) { 
     stopEvent(); 
    } else { 
     var newRatio = getRatio() + 0.01; 

     setUIArrayValue("currentRatio", newRatio); 
     setIDText('ratiovalue', getRatio().toFixed(2)); 
    } 
} 

La fonction ci-dessus utilise accesseurs tels que:

  • getStatus(), getRatio()
  • setUIArrayValue (clé, valeur), setIDText (id, texte)

Certains d'entre eux contiennent une instruction mais sont fréquemment réutilisés dans le code.

Par exemple, setIDText():

function setIDText(id, text) { 
    document.getElementById(id).innerHTML = text; 
} 

Contient 1 déclaration, mais fournit une manière beaucoup plus court et lisible du texte muter. Sans ces setters et getters, des fonctions telles que incrementRatio() sembleraient plutôt encombrées.

+0

Parlez-vous de getters et setters réels, ou juste quelque chose que vous appelez "getters" et "setters"? Pourquoi ne pas poster la fonction qui contient ces getters et setters? Créer des fonctions régulières qui simplifient les choses, c'est très bien BTW – adeneo

+5

Je ne les appellerais pas getters/setters, car cela fait généralement référence à des propriétés; mais oui mettre la fonctionnalité fréquemment utilisée dans les fonctions réutilisables est une pratique très bonne et standard. – Bergi

+0

La réponse est: non, les getters et les setters ne sont pas une mauvaise pratique en soi. –

Répondre

2

nom que vous accesseurs ne sont pas vraiment ceux-ci exercent une logique réelle comme par exemple la fonction setIDText():

function setIDText(id, text) { 
    document.getElementById(id).innerHTML = text; 
} 

Ce sont plutôt des méthodes auxiliaires/logiques qui permet à la fois:

  • à évitez de vous répéter.
  • pour rendre votre code plus lisible et plus compréhensible en faisant abstraction des détails d'implémentation dans une fonction qui transmet un nom explicite.

L'utilisation de ce type de fonction est une bonne chose car il offre un meilleur code de qualité.

+2

Quoi, vous ne profitez pas [** W ** riting ** E ** tout ** ** ** ** Wice] (https://en.wikipedia.org/wiki/Don ' t_repeat_yourself # DRY_vs_WET_solutions)? –

+0

@Patrick Roberts Pas vraiment mais touchant deux fois mon salaire, pourquoi pas :) – davidxxx

0

Non, ce n'est pas le cas. Cela rend le code beaucoup plus lisible, et un bon parseur le mettra en ligne pour que la différence de performance soit proche de zéro.

+1

Vous voulez dire un bon "compilateur JIT", pas un "analyseur". –

+0

@patrick roberts mais n'est pas un compilateur JIT un analyseur? ;) –

+0

Non, il fait beaucoup plus que juste l'analyse. Un analyseur génère simplement AST, un compilateur génère du code exécutable, et en v8, il implémente également des techniques d'optimisation assez avancées, ce qui explique pourquoi JavaScript a lentement réussi à avoir plus de capacité de performance au fil des ans. –