4 puntos por GN⁺ 2023-08-20 | 2 comentarios | Compartir por WhatsApp
  • Artículo sobre "Railway Oriented Programming" (ROP), un método funcional de manejo de errores en el desarrollo de software
  • ROP basado en la analogía del ferrocarril, fácil de entender y entretenido
  • Se creó en GitHub un proyecto que compara C# convencional y F# usando el enfoque ROP
  • Advertencia sobre usar ROP de forma extrema, explicada en detalle en un texto titulado "Against Railway-Oriented Programming"
  • Presentado en varias conferencias sobre este tema, como NDC London 2014, NDC Oslo 2014 y Functional Programming eXchange 2014
  • El enfoque hacia ROP está relacionado con el mónada Either de Haskell y la composición de Kleisli, pero no intenta ser un tutorial de mónadas
  • Se enfatiza la importancia de comenzar con ejemplos concretos y avanzar hacia conceptos abstractos
  • Incluye técnicas del enfoque ROP como usar una lista de tipos de error definidos por el usuario, integrar funciones monádicas y no monádicas en un pipeline, mapear excepciones a casos de error y combinar en paralelo funciones monádicas
  • El objetivo es ofrecer una plantilla ROP versátil que fuerce un estilo consistente y sea fácil de mantener
  • Para quienes quieran una biblioteca F# lista para usar con NuGet, se recomienda el proyecto Chessie
  • Se creó un servicio web de ejemplo usando técnicas ROP y se aplicó el enfoque ROP a FizzBuzz
  • Se sugieren lecturas adicionales, incluidas varias publicaciones y tutoriales sobre mónadas, para quienes quieran más detalles sobre Either y la composición de Kleisli

2 comentarios

 
GN⁺ 2023-08-20
Opiniones en Hacker News
  • El artículo analiza el concepto de Railway Oriented Programming (ROP), un patrón de programación funcional que ayuda a gestionar el manejo de errores de forma limpia y eficiente.
  • Un comentarista destaca el uso de la palabra clave with en Elixir como una implementación práctica de ROP. Esto permite la ejecución secuencial de funciones y posibilita un retorno anticipado si alguna función no coincide con la salida esperada.
  • Otro comentarista menciona que el autor hace referencia a una publicación posterior titulada "Against Railway Oriented Programming", que advierte sobre el mal uso de ROP como sustituto del manejo de excepciones. El comentarista coincide en que, aunque ROP a veces se usa por sí misma, en la mayoría de los casos las excepciones ofrecen una forma más limpia de manejar condiciones de error.
  • Algunos comentaristas sostienen que ROP puede alejar el manejo de errores del lugar donde se hace la llamada, lo cual podría no ser ideal porque con frecuencia quien llama es quien mejor está preparado para manejar el error. Sugieren que ROP puede requerir código repetitivo adicional que es fácil de olvidar o implementar mal.
  • El sitio que aloja el artículo recibe elogios de varios comentaristas por su contenido educativo, especialmente por su enfoque en conceptos de programación funcional.
  • Un comentarista sugiere que la programación de flujo de datos podría ser una mejor alternativa a ROP, ya que permite manejar errores sin afectar el "camino feliz" del programa.
  • El artículo ha sido discutido varias veces en Hacker News, lo que indica su relevancia e interés continuos en la comunidad técnica.
  • Algunos comentaristas expresan preocupación porque el uso de ROP puede hacer que toda la lógica de negocio se vea igual, y proponen otros métodos para manejar errores de validación y efectos secundarios.
  • Varios comentaristas elogian las discusiones repetidas sobre ROP y señalan que su comprensión y perspectiva sobre el concepto evolucionan a medida que avanza su trayectoria técnica.
  • Un comentarista comparte su propio artículo sobre cómo implementar ROP en C#.