Les effets secondaires sont-ils «chaque» ou «certains» de l'arraie?
https://softwareengineering.stackexchange.com/questions/186497
-
05-11-2019 - |
Question
J'ai toujours appris que le fait d'avoir des effets secondaires dans un if
les conditions sont mauvaises. Ce que je veux dire est;
if (conditionThenHandle()) {
// do effectively nothing
}
... par opposition à;
if (condition()) {
handle();
}
... Et je comprends cela, et mes collègues sont heureux parce que je ne le fais pas, et nous rentrons tous à 17h00 un vendredi et tout le monde a un joyeux week-end.
Maintenant, Ecmascript5 a introduit des méthodes comme every()
et some()
à Array
, et je les trouve très utiles. Ils sont plus propres que for (;;;)
'S, donnez-vous une autre portée, et rendre l'élément accessible par une variable.
Cependant, lors de la validation de l'entrée, je ne me retrouve plus loin que every
/some
Dans l'état de valider l'entrée, puis utilisez every
/some
encore dans le corps pour convertir l'entrée en un modèle utilisable;
if (input.every(function (that) {
return typeof that === "number";
})) {
input.every(function (that) {
// Model.findById(that); etc
}
} else {
return;
}
... quand ce que je vouloir faire est;
if (!input.every(function (that) {
var res = typeof that === "number";
if (res) {
// Model.findById(that); etc.
}
return res;
})) {
return;
}
... ce qui me donne des effets secondaires dans un if
, condition, ce qui est mauvais.
En comparaison, c'est le code avec un vieux for (;;;)
;
for (var i=0;i<input.length;i++) {
var curr = input[i];
if (typeof curr === "number") {
return;
}
// Model.findById(curr); etc.
}
Mes questions sont:
- Est-ce vraiment une mauvaise pratique?
- Suis-je (mis | ab) en utilisant
some
etevery
(devrait J'utilise unfor(;;;)
pour ça?) - Est-ce qu'il y a une meilleure approche?
Pas de solution correcte