Her zaman bir ifdurumda yan etkilere sahip olmanın kötü olduğu öğretildi . Demek istediğim ... dir;
if (conditionThenHandle()) {
// do effectively nothing
}
... aksine;
if (condition()) {
handle();
}
... ve bunu anlıyorum ve meslektaşlarım mutlu çünkü bunu yapmıyorum ve hepimiz Cuma günü saat 17: 00'de eve gidiyoruz ve herkes mutlu bir hafta sonu geçiriyor.
Şimdi, ECMAScript5'i gibi yöntemler tanıtıldı every()ve some()hiç Array, ben onları çok yararlı buluyorum. Onlar daha temiz for (;;;), size başka bir kapsam vermek ve bir değişken tarafından eleman erişilebilir hale getirmek.
Ancak girdiyi doğrularken, girdiyi doğrulamak için every/ somekoşulunu kullanarak kendimi daha sık bulamıyorum , daha sonra girdiyi kullanılabilir bir modele dönüştürmek için gövdede every/ öğesini some tekrar kullanıyorum ;
if (input.every(function (that) {
return typeof that === "number";
})) {
input.every(function (that) {
// Model.findById(that); etc
}
} else {
return;
}
... yapmak istediğim şey;
if (!input.every(function (that) {
var res = typeof that === "number";
if (res) {
// Model.findById(that); etc.
}
return res;
})) {
return;
}
... bana ifkötü bir durumda yan etkiler veriyor .
Buna karşılık, kod eski ile bakmak olurdu for (;;;);
for (var i=0;i<input.length;i++) {
var curr = input[i];
if (typeof curr === "number") {
return;
}
// Model.findById(curr); etc.
}
Sorularım:
- Bu kesinlikle kötü bir uygulama mı?
- Am I (mis | ab) kullanılarak
someveevery( gereken bir kullanıyorfor(;;;)bunun için?) - Daha iyi bir yaklaşım var mı?
some, elemanla bir şey yapmak istiyorum , kullanırsam every, tüm bu elemanlara bir şey yapmak istiyorum ... someve everybu bilgilere erişmeme izin vermiyorum, bu yüzden ya yapamam onları kullanın, ya da yan etkiler eklemek zorundayım.
someBenim durumumda ifdizideki belirli bir öğenin belirli bir özellik gösterip göstermediğini belirlemek için kullanırsam , 9/10 Vücudumdaki o öğe üzerinde çalışmam gerekiyor if; şimdi, somebana hangi elemanların özelliği sergilediğini söylemediğinden (sadece "biri yaptı"), ya some tekrar vücutta kullanabilirim (O (2n)), ya da sadece if koşulu içindeki işlemi yapabilirim ( ki bu kötü, çünkü kafa içinde bir yan etkisi var).
everyelbette geçerlidir .