Her zaman bir if
durumda 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
/ some
koş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 if
kö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
some
veevery
( 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 ... some
ve every
bu bilgilere erişmeme izin vermiyorum, bu yüzden ya yapamam onları kullanın, ya da yan etkiler eklemek zorundayım.
some
Benim durumumda if
dizideki 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, some
bana 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).
every
elbette geçerlidir .