Railway-Oriented Programming 은 사이드 이펙트를 제어하기 위한 함수형 패러다임 기반 방법론 입니다.
이 방법론은 사실 널리 알려진 내용은 아닙니다만,
최근 급부상하고 있는 Rust 에서 try-catch 문법을 지원하지 않는대신 ROP 철학을 일부 따르고 있어 알아두면 나쁘지 않은 방법론입니다.
그리고 굉장히 단순한 내용이기 때문에 실제 이 방법론을 몰라도 이미 쓰고 있거나
프레임워크나 라이브러리 코드를 통해 접해보셨을 수도 있습니다.
Railway-Oriented Programming 을 간단하게 요약하면,
로직은 성공 혹은 실패로 나뉘고 그에 따라 새로운 선로를 설치해서 신뢰할 수 있는 소프트웨어를 구축한다는 방법론입니다.
Railway-Oriented Programming 은 다음과 같은 철학을 따릅니다.
📌 모든 기능은 순차적으로 실행된다.
📌 모든 기능은 성공 혹은 실패로 나뉜다.
📌 프로그램은 패닉이 발생하면 안된다.
Railway-Oriented Programming 의 철학은 다소 간단하지만 그에 반해 다음과 같은 큰 장점을 가지는 방법론 입니다.
프로그래밍을 하게되면 기능에 대한 추상화를 많이 하게 될텐데요,
Railway-Oriented Programming 에선 기능을 선로에 빗대어 추상화하며 선로를 구성하는 기능들은 모두 성공 혹은 실패로 나누게 됩니다.
이렇게 하면 기능의 단위를 성공과 실패로 나눌 수 있는 적절한 크기로 나누게 되므로 구현과 리팩토링 하는 것이 편해지게 됩니다.
또한, 모든 기능을 순차적으로 실행하기 때문에 프로그램의 흐름을 이해하기 쉬워지고 가독성이 좋아지는 장점이 있습니다.
공유드린 글에서는 Railway-Oriented Programming 에 대한 이해를 돕기 위해 필요한 개념들을 자세히 다루고 있으니 관심있으신 분들은 한번 보시면 좋겠습니다.
🔗 원문 링크: https://kciter.so/posts/railway-oriented-programming