Так это только благодаря тебе она начинается, потому что ты if-ы используешь. А так-то вообще такие штуки на перегрузках делаются. И перегрузки можно делать по-разному. Можно, лямбды использовать, можно собственные функционалы. Можно через композицию, можно через монолиты. И здесь очень востребованы оказываются концепцы и констрейнты. И код реально выглядит красиво и профессионально, не что что твои if-ы, с энумами.
--
Справедливость выше закона. А человечность выше справедливости.