Soy un gran fan de la programación funcional. Me esfuerzo por usar la notación sin puntos cuando puedo. Sin embargo, a menudo no entiendo cuándo es apropiada la notación sin puntos o cuándo es exagerada. El problema típico con el que me encuentro es cuando tengo tres o menos funciones para las que me encantaría usar una declaración de compose(...) para evitar la creación de variables. Sin embargo, a menudo siento que el código termina viéndose más feo cuando uso compose(...) para tan pocas funciones en comparación con el uso de variables intermedias.
Aquí hay un ejemplo de mi dilema:
// Prefering point free notation (address, signer, execute) => (atr, sequenceId) => compose( setTxHash(atr, sequenceId), execute(address, signer), findTx, )(atr, sequenceId); // Preferring temporary variables (address, signer, execute) => (atr, sequenceId) => { const step1 = findTx(atr, sequenceId); const step2 = execute(address, signer)(step1); const step3 = setTxHash(atr, sequenceId)(step2); return step3; } // function composition without using compose(...) method (address, signer, execute) => (atr, sequenceId) => setTxHash(atr, sequenceId)( execute(address, signer)( findTx(atr, sequenceId) ) )Sé preguntar "¿alguno de estos se ve mejor que otros?" puede ser demasiado subjetivo, pero ¿hay alguna regla general que pueda usar o algún buen recurso que hable sobre esto y pueda ofrecer una perspectiva útil?
¡Gracias por adelantado!
Si necesita introducir los puntos (variables con nombres) de todos modos porque los está pasando a múltiples funciones, usar compose es excesivo. La tercera versión de su función es la más limpia en ese sentido. Además, los nombres siempre son útiles si son descriptivos, ya que eso ayuda a la comprensión del código.
Solo si pudieras escribir
(execute) => compose( setTxHash, execute, findTx, ) el uso de compose te gana algo (en particular, concisión).