" ifs are a smelly thing in a Object Oriented language."
What's smelly is such a absurd assumption. Yes, let's replace every small decision in our program with inheritance and another level of abstraction, that will work out swell
Please go read an Assembly manual because you have obviously forgotten what a computer is and does
And then we end up with unmaintainable systems with a class hierarchy higher than the Empire State.
Of course, as mentioned, replacing an if with a "software structure" (like pattern matching in an functional language) is beneficial, but to call it a code smell is ridiculous