Mientras más profundizo en javascript, más pienso en las consecuencias de ciertas decisiones de diseño y prácticas recomendadas. En este caso, estoy observando funciones anónimas, una característica que no solo está provista por JavaScript, sino que la veo muy utilizada.funciones anónimas consideradas nocivas?
Creo que todos estamos de acuerdo en los siguientes hechos:
- la mente humana no se ocupa de más de 7 ± dos entidades (Miller's law)
- hendidura profunda se considera bad programming practice, y señala general en problemas de diseño si sangra más de tres o cuatro niveles. Esto se extiende a las entidades anidadas, y está bien presentado en la entrada de python Zen "Flat es mejor que anidado".
- La idea de tener un nombre de función es tanto de referencia como para una fácil documentación de la tarea que realiza. Sabemos, o podemos esperar, lo que hace una función llamada removeListEntry(). El código claro y autodocumentado es importante para la depuración y la legibilidad.
Mientras que las funciones anónimas parecen ser una característica muy agradable, su uso conduce a un diseño de código profundamente anidado. El código es rápido de escribir, pero difícil de leer. En lugar de tener que inventar un contexto con nombre para una funcionalidad y aplanar su jerarquía de objetos invocables, fomenta un "nivel profundo", empujando su pila de cerebros y desbordando rápidamente la regla 7 +/- 2. Un concepto similar se expresa en "About Face" de Alan Cooper, citando de forma vaga "las personas no entienden las jerarquías". Como programadores, entendemos las jerarquías, pero nuestra biología aún limita nuestra comprensión de la anidación profunda.
Me gustaría escucharlo sobre este punto. ¿Deben considerarse las funciones anónimas perjudiciales, un azúcar sintáctico brillante aparente que más tarde descubriremos que es sal o incluso veneno para ratas?
CW ya que no hay una respuesta correcta.
¿Qué quiere decir con considerar funciones anónimas como "un azúcar sintáctico"? – day
¿Prefiere ver un nivel más de sangría para una función única/lambda o tiene que encontrar dónde se encuentra una función no anónima en el nivel superior? Si la función está en un lugar diferente, entonces para mí eso es como una entidad más con la que lidiar, donde como si estuviera en línea, es solo parte de la misma entidad. Si tu opinión es que es más difícil leer código con funciones anónimas, mi opinión es que eres raro – Andy