Una cosa comune che devi fare è prendere un valore, fare qualcosa con esso passando ad una funzione, e poi fare di più con il valore restituito, in una catena. Ogni volta che mi imbatto in questo tipo di scenario, non sono sicuro del modo migliore per scrivere il codice.
Ad esempio, diciamo che ho un numero, num
, e ho bisogno di prendere la radice quadrata del pavimento e trasformarla in una stringa. Ecco alcune possibilità (in JavaScript).
Potrei semplicemente passare num
a una funzione alla volta e sostituire num
con il valore restituito:
function floorSqrt(num) {
num = Math.sqrt(num);
num = Math.floor(num);
num = String(num);
return num;
}
Questo è bello dal momento che non ho più bisogno del% originale dinum
, ma in pratica potrebbe essere fonte di confusione iniziare con una cosa (un numero) e finire con qualcosa di completamente diverso (una stringa).
Posso salvare ogni passaggio in una nuova variabile:
function floorSqrt(num) {
var sqrtNum = Math.sqrt(num);
var floorSqrt = Math.floor(sqrtNum);
var stringNum = String(floorSqrt);
return stringNum;
}
Anche se sembra uno spreco dichiarare tutte quelle variabili e trovare un buon nome per loro.
Oppure posso semplicemente fare tutto come one-liner :
function floorSqrt(num) {
return String(Math.floor(Math.sqrt(num)));
}
Ma per più di due funzioni questo approccio diventa incredibilmente illeggibile, quasi come codice golf .
Mi sembra che il modo più bello per farlo sia con un linguaggio basato sullo stack, che potrebbe apparire simile a questo (pseudo codice):
[sqrt floor toString]
C'è un modo per fare qualcosa di simile con JavaScript? Elenca alcune funzioni, eseguine una alla volta e usa il valore di ritorno di ognuna come argomento per il prossimo? Il più vicino è il modo in cui alcune librerie come jQuery o Underscore.js ti consente di concatenare i metodi, in modo simile a questo:
function floorSqrt(num) {
return _.chain(num).sqrt().floor().toString().value();
}
Sono sicuro che molte persone sagge hanno pensato cose saggi su questo. Quali sono le riflessioni sui pro e contro dei diversi stili?