Exactly. If you have a big mess of if-statements it is not because the if-statement sucks, but because your code sucks. Many of those fancy ways of replacing the supposed evil keyword are just painting over the rotten codebase. Too many conditions/responsibilities in one place is too many, no matter how fancy you write them down.