2013-03-31

97/2 cosas que todos los programadores deberían saber


Aplicar los principios de programación funcional

La programación funcional ha disfrutado recientemente renovado interés de la comunidad de la programación general. Parte de la razón se debe a que las propiedades emergentes del paradigma funcional están bien posicionados para hacer frente a los desafíos planteados por el cambio de la industria hacia la multi-core. Sin embargo, mientras que es sin duda una aplicación importante, no es la razón de esta pieza manda, te invita a conocer tu programación funcional.
El dominio del paradigma de programación funcional puede mejorar la calidad del código que se escribe en otros contextos. Si usted profundamente entender y aplicar el paradigma funcional, sus diseños se exhiben un mayor grado de transparencia referencial.
Transparencia referencial es una propiedad muy deseable: Implica que funciona consistentemente los mismos resultados, dada la misma entrada, con independencia de dónde y cuándo se invocan. Es decir, la evaluación de la función depende menos - lo ideal, para nada - sobre los efectos secundarios del estado mutable.
Una de las principales causas de defectos en el código imperativo es atribuible a variables mutables. Todos los que lean esta se han investigado por qué algunos valor no es el esperado en una situación particular. Visibilidad semántica puede ayudar a mitigar estos defectos insidiosos, o al menos para reducir drásticamente abajo de su ubicación, pero su verdadero culpable puede de hecho ser la providencia de diseños que emplean mutabilidad excesiva.
Y desde luego no obtener mucha ayuda de la industria en este sentido. Introducción a la orientación a objetos tácitamente promover el diseño tal, ya que a menudo muestran ejemplos de compuestos de gráficos de objetos relativamente larga duración que requieren métodos de mutador felizmente el uno del otro, lo cual puede ser peligroso. Sin embargo, con astuta diseño basado en pruebas, especialmente al seguro de "Roles Mock, no objetos" , mutabilidad innecesaria puede ser diseñado de distancia.
El resultado es un diseño que tiene típicamente una mejor asignación de responsabilidad con numerosas funciones más pequeñas que actúan sobre argumentos que se pasan en ellos, en lugar de hacer referencia mutable variables miembro. Habrá menos defectos, y, además, a menudo será más fácil de depurar, ya que es más fácil de localizar donde un valor pícaro se introduce en estos diseños que deducir de lo contrario el contexto particular que resulta en una asignación errónea. Esto se suma a un mayor grado de transparencia referencial, y positivamente nada va a conseguir estas ideas tan profundamente en sus huesos como el aprendizaje de un lenguaje de programación funcional, donde este modelo de cálculo es la norma.
Por supuesto, este enfoque no es óptima en todas las situaciones. Por ejemplo, en sistemas orientados a objetos este estilo a menudo da mejores resultados con el desarrollo del modelo de dominio (es decir, donde colaboraciones sirven para descomponer la complejidad de las reglas de negocio) que con el desarrollo de la interfaz de usuario.
Domina el paradigma de la programación funcional por lo que son capaces de aplicar con criterio las lecciones aprendidas a otros dominios. Sus sistemas de objetos (por ejemplo) va a resonar con la bondad transparencia referencial y estar mucho más cerca de sus homólogos funcionales de lo que muchos quieren hacer creer. De hecho, algunos incluso afirman que el vértice de la programación funcional y la orientación a objetos no son más que un reflejo el uno del otro, una forma de cálculo del yin y el yang.